20 #ifndef GALOIS_WORKLIST_BULKSYNCHRONOUS_H
21 #define GALOIS_WORKLIST_BULKSYNCHRONOUS_H
25 #include "galois/config.h"
38 template <
class Container = PerSocketChunkFIFO<>,
class T =
int,
39 bool Concurrent = true>
42 template <
bool _concurrent>
45 template <
typename _T>
49 template <
typename _container>
64 std::atomic<bool> isEmpty;
77 template <
typename ItTy>
78 void push(ItTy b, ItTy e) {
83 template <
typename RangeTy>
85 auto rp = range.local_pair();
86 push(rp.first, rp.second);
99 r = wls[tld.round].pop();
109 tld.round = (tld.round + 1) & 1;
112 r = wls[tld.round].pop();
Definition: CacheLineStorage.h:32
void push_initial(const RangeTy &range)
Definition: BulkSynchronous.h:84
substrate::Barrier & getBarrier(unsigned activeThreads)
Have a pre-instantiated barrier available for use.
Definition: Substrate.cpp:24
galois::optional< value_type > pop()
Definition: BulkSynchronous.h:91
T * getLocal()
Definition: PerThreadStorage.h:128
T & get()
Definition: CacheLineStorage.h:46
BulkSynchronous()
Definition: BulkSynchronous.h:69
Galois version of boost::optional.
Definition: optional.h:34
static unsigned getTID()
Definition: ThreadPool.h:204
unsigned int activeThreads
Definition: Threads.cpp:26
Bulk-synchronous scheduling.
Definition: BulkSynchronous.h:40
#define GALOIS_WLCOMPILECHECK(name)
Definition: WLCompileCheck.h:26
void push(ItTy b, ItTy e)
Definition: BulkSynchronous.h:78
T value_type
Definition: BulkSynchronous.h:67
void push(const value_type &val)
Definition: BulkSynchronous.h:73