00001 #ifndef DV_THREAD_BARRIER_H 00002 #define DV_THREAD_BARRIER_H 00003 // $Id: barrier.h,v 1.4 2008/12/21 09:40:47 dvermeir Exp $ 00004 00005 namespace Dv { 00006 namespace Thread { 00007 /** A simple Barrier class using posix barriers. 00008 * Note that in the present version, a Barrier can only be used 00009 * once. 00010 * @see Dv::Thread::Thread 00011 */ 00012 class Barrier { 00013 public: 00014 /** Constructor. 00015 * @param n_threads how many threads will have to wait on this 00016 * barrier before it comes down. 00017 */ 00018 Barrier(size_t n_threads); 00019 /** Destructor */ 00020 virtual ~Barrier(); 00021 /** Wait for the Barrier. This function returns only when 00022 * exactly n_threads have performed a wait on this barrier 00023 * @see Dv::Thread::Barrier::Barrier 00024 */ 00025 void wait(); 00026 private: 00027 pthread_t creator_; 00028 void* barrier_; 00029 Barrier(const Barrier&); 00030 Barrier& operator=(const Barrier&); 00031 }; 00032 } 00033 } 00034 00035 #endif
dvthread-0.13.4 | [11 December, 2009] |