Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef XDISPATCH_GROUP_H_
00023 #define XDISPATCH_GROUP_H_
00024
00025 #ifndef __XDISPATCH_INDIRECT__
00026 #error "Please #include <xdispatch/dispatch.h> instead of this file directly."
00027 #endif
00028
00029 #include "dispatch.h"
00030 #include <iostream>
00031
00032 __XDISPATCH_BEGIN_NAMESPACE
00033
00044 class XDISPATCH_EXPORT group {
00045
00046 public:
00050 group();
00054 group(dispatch_group_t);
00055 group(const group&);
00056 ~group();
00057
00063 void async(operation* r, const queue& q = global_queue());
00064 #ifdef XDISPATCH_HAS_BLOCKS
00065
00069 void async(dispatch_block_t b, const queue& q = global_queue());
00070 #endif
00071
00077 bool wait(dispatch_time_t = DISPATCH_TIME_FOREVER);
00084 bool wait(struct tm* t);
00097 void notify(operation* r, const queue& q = global_queue());
00098 #ifdef XDISPATCH_HAS_BLOCKS
00099
00111 void notify(dispatch_block_t b, const queue& q = global_queue());
00112 #endif
00113
00118 const dispatch_group_t native() const;
00119
00120 private:
00121 class data;
00122 data* d;
00123 };
00124
00125 XDISPATCH_EXPORT std::ostream& operator<<(std::ostream& stream, const group* );
00126 XDISPATCH_EXPORT std::ostream& operator<<(std::ostream& stream, const group& );
00127
00128 __XDISPATCH_END_NAMESPACE
00129
00130 #endif