| pthread_mutex_t a = PTHREAD_MUTEX_INITIALIZER; |
| pthread_mutex_t b = PTHREAD_MUTEX_INITIALIZER; |
| if (pthread_barrier_wait(&bar) == PTHREAD_BARRIER_SERIAL_THREAD) |
| pthread_barrier_destroy(&bar); |
| pthread_mutex_unlock(&a); |
| pthread_mutex_unlock(&b); |
| pthread_barrier_init(&bar, NULL, 2); |
| if (pthread_create(&t, NULL, ba_lock, NULL)) { |
| fprintf(stderr, "pthread_create() failed\n"); |
| if (pthread_barrier_wait(&bar) == PTHREAD_BARRIER_SERIAL_THREAD) |
| pthread_barrier_destroy(&bar); |
| pthread_mutex_unlock(&b); |
| pthread_mutex_unlock(&a); |