38 #include "blocxx/BLOCXX_config.h"
45 #if defined(BLOCXX_USE_PTHREAD) && defined(BLOCXX_HAVE_PTHREAD_BARRIER) && !defined(BLOCXX_VALGRIND_SUPPORT)
56 namespace BLOCXX_NAMESPACE
61 #if defined(BLOCXX_USE_PTHREAD) && defined(BLOCXX_HAVE_PTHREAD_BARRIER) && !defined(BLOCXX_VALGRIND_SUPPORT) // valgrind doesn't support pthread_barrier_*()
68 memset(&barrier, 0,
sizeof(barrier));
69 int res = pthread_barrier_init(&barrier, NULL, threshold);
77 int res = pthread_barrier_destroy(&barrier);
86 int res = pthread_barrier_wait(&barrier);
87 if (res != 0 && res != PTHREAD_BARRIER_SERIAL_THREAD)
89 BLOCXX_THROW(ThreadBarrierException, Format(
"pthread_barrier_wait failed: %1(%2)", res, strerror(res)).c_str());
93 pthread_barrier_t barrier;