00001 00023 #ifndef GALOIS_RUNTIME_BARRIER_H 00024 #define GALOIS_RUNTIME_BARRIER_H 00025 00026 namespace Galois { 00027 namespace Runtime { 00028 00029 class Barrier { 00030 public: 00031 virtual ~Barrier(); 00032 00033 //not safe if any thread is in wait 00034 virtual void reinit(unsigned val) = 0; 00035 00036 //Wait at this barrier 00037 virtual void wait() = 0; 00038 00039 //wait at this barrier 00040 void operator()(void) { wait(); } 00041 }; 00042 00055 Barrier& getSystemBarrier(); 00056 00064 Barrier* createSimpleBarrier(); 00065 } 00066 } // end namespace Galois 00067 00068 #endif