4 : m_maxCount(maxCount),
18 std::unique_lock<std::mutex> lock(m_mutex);
20 if(m_blockedCount < m_maxCount)
23 m_conditionalBlock.wait(lock, [
this]{
return m_blockedCount>=m_maxCount;} );
28 m_conditionalBlock.notify_all();
31 m_conditionalWait.notify_all();
36 std::unique_lock<std::mutex> lock(m_mutex);
38 m_blockedCount = m_maxCount;
39 if(m_waitCount.load() > 0){
40 m_conditionalBlock.notify_all();
42 m_conditionalWait.wait(lock, [
this]{
return m_waitCount.load()<1;});
55 std::unique_lock<std::mutex> lock(m_mutex);
56 m_maxCount = maxCount;
62 std::lock_guard<std::mutex> lock(m_mutex);
68 std::lock_guard<std::mutex> lock(m_mutex);
69 return m_blockedCount;
void block()
block will block the thread based on a wait condition.
ossim_int32 getBlockedCount() const
~Barrier()
Destructor will reset and release all blocked threads.
Barrier(ossim_int32 n)
Constructor.
void reset()
Will reset the barrier to the original values.
ossim_int32 getMaxCount() const