#include #include #include unsigned long work1 = 0, work2 = 0; pthread_barrier_t barrier; void *thread1(void *parg) { pthread_barrier_wait(&barrier); while(1) { work1++; } return NULL; } void *thread2(void *parg) { pthread_barrier_wait(&barrier); while(1) { work2++; } return NULL; } int main(int argc, char *argv[]) { pthread_barrierattr_t barrierAttr; pthread_t threadID; pthread_attr_t threadAttr; pthread_barrierattr_init(&barrierAttr); pthread_barrier_init(&barrier, &barrierAttr, 3); pthread_attr_init(&threadAttr); pthread_attr_setdetachstate(&threadAttr, PTHREAD_CREATE_DETACHED); pthread_create(&threadID, &threadAttr, thread1, NULL); pthread_create(&threadID, &threadAttr, thread2, NULL); pthread_barrier_wait(&barrier); setprio( 0, 11 ); while (1) { sleep(1); printf( "%lu %lu\n", work1, work2 ); } return 0; }