1 #include <pthread.h> 2 #include <stdio.h> 3 #include <stddef.h> 4 #include <unistd.h> 5 6 pthread_barrier_t B; 7 int Global; 8 9 void *Thread1(void *x) { 10 pthread_barrier_init(&B, 0, 2); 11 pthread_barrier_wait(&B); 12 return NULL; 13 } 14 15 void *Thread2(void *x) { 16 usleep(1000000); 17 pthread_barrier_wait(&B); 18 return NULL; 19 } 20 21 int main() { 22 pthread_t t; 23 pthread_create(&t, NULL, Thread1, NULL); 24 Thread2(0); 25 pthread_join(t, NULL); 26 pthread_barrier_destroy(&B); 27 return 0; 28 } 29 30 // CHECK: WARNING: ThreadSanitizer: data race 31 32