39 #ifndef THREADS_SYNC_H
40 #define THREADS_SYNC_H
84 m_mutex(PTHREAD_MUTEX_INITIALIZER),
97 pthread_mutex_destroy(&
m_mutex);
109 if (!pthread_mutex_lock(&
m_mutex))
138 pthread_mutex_unlock(&
m_mutex);
143 pthread_mutex_unlock(&
m_mutex);
151 pthread_mutex_unlock(&
m_mutex);
164 pthread_mutex_unlock(&
m_mutex);
185 return pthread_mutex_unlock(&
m_mutex) == 0;
220 bool broadcast(T &data,
unsigned int numThreads,
unsigned int current,
unsigned int root = 0)
231 data = *
static_cast<T*
>(
m_data);
239 #endif // THREADS_SYNC_H
unsigned int m_syncedThreads
bool barrier(unsigned int numThreads)
bool waitBarrier(unsigned int numThreads, bool last=false)
Synchronizes a set of threads.
pthread_cond_t m_condition
bool broadcast(T &data, unsigned int numThreads, unsigned int current, unsigned int root=0)
unsigned int waiting() const
pthread_cond_t m_lastCondition
pthread_cond_t m_finishCondition
unsigned int m_lastThreads