29 #ifndef PIRANHA_THREAD_BARRIER_HPP 30 #define PIRANHA_THREAD_BARRIER_HPP 32 #include <condition_variable> 38 #include <piranha/thread_barrier.hpp> 76 explicit thread_barrier(
unsigned count) : m_mutex(), m_cond(), m_threshold(count), m_count(count), m_generation(0)
99 std::unique_lock<std::mutex> lock(m_mutex);
100 if (m_count != m_threshold) {
119 std::unique_lock<std::mutex> lock(m_mutex);
120 unsigned gen = m_generation;
121 if (--m_count == 0) {
126 m_count = m_threshold;
133 while (gen == m_generation) {
146 std::condition_variable m_cond;
147 const unsigned m_threshold;
149 unsigned m_generation;
thread_barrier(unsigned count)
Constructor.
~thread_barrier()
Destructor.
#define piranha_throw(exception_type,...)
Exception-throwing macro.