CARMA C++
MultiShotBarrier.h
1 #ifndef CARMA_UTIL_MULTISHOTBARRIER_H
2 #define CARMA_UTIL_MULTISHOTBARRIER_H
3 
4 #include "carma/util/PthreadCond.h"
5 #include "carma/util/PthreadMutex.h"
6 
7 namespace carma {
8 namespace util {
9 
16  public:
17 
24  explicit MultiShotBarrier( size_t initialSatisfyCount );
25 
31  explicit MultiShotBarrier( );
32 
33 
37  virtual ~MultiShotBarrier( );
38 
45  void reset( size_t satisfyCount );
46 
50  void wait( );
51 
52  private:
53 
54  // No copying
55  MultiShotBarrier( const MultiShotBarrier & rhs );
56  MultiShotBarrier & operator=( const MultiShotBarrier & rhs );
57 
58  size_t satisfyCount_;
59  PthreadMutex guard_;
60  PthreadCond satisfiedCond_;
61  size_t waitCount_;
62 
63  size_t activeWaiters_;
64  PthreadMutex activeWaitersGuard_;
65 
66 };
67 
68 
69 } // namespace carma::util
70 } // namespace carma
71 
72 #endif
MultiShotBarrier()
Default constructor.
void wait()
Wait until all other waiters have reached this barrier.
A simple wrapper class that makes use of ::pthread_cond_t easier in a C++ world.
Definition: PthreadCond.h:43
void reset(size_t satisfyCount)
Reset the satisyCount to reuse barrier.
MultiShotBarrier class.
virtual ~MultiShotBarrier()
Destructor.
A simple wrapper class that makes use of ::pthread_mutex_t easier in a C++ world. ...
Definition: PthreadMutex.h:41