#if !defined(PTHREAD_BARRIER_SUBST_) #define PTHREAD_BARRIER_SUBST_ typedef struct pthread_barrier_t { pthread_mutex_t mtx; pthread_cond_t cv; int valid; int n_threads_required; int n_threads_left; int cycle; /* alternate wait cycles (0 or 1) */ } pthread_barrier_t; typedef struct pthread_barrierattr_t { /* Not implemented. */ /* First, AIX doesn't have barriers. Then xlc requires a member. augh. */ char c; } pthread_barrierattr_t; #define PTHREAD_BARRIER_SERIAL_THREAD -1 #ifdef __cplusplus extern "C" { #endif int pthread_barrier_init (pthread_barrier_t*, const pthread_barrierattr_t*, unsigned); int pthread_barrier_destroy (pthread_barrier_t*); int pthread_barrier_wait (pthread_barrier_t*); int pthread_barrierattr_init (pthread_barrierattr_t*); int pthread_barrierattr_destroy (pthread_barrierattr_t*); int pthread_barrierattr_getpshared (const pthread_barrierattr_t*, int*); int pthread_barrierattr_setpshared (pthread_barrierattr_t*, int); #ifdef __cplusplus } #endif #endif /* PTHREAD_BARRIER_SUBST_ */