1 // RUN: %clang_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 2 3 // pthread barriers are not available on OS X 4 // UNSUPPORTED: darwin 5 6 #include "test.h" 7 8 pthread_barrier_t B; 9 int Global; 10 Thread1(void * x)11void *Thread1(void *x) { 12 pthread_barrier_init(&B, 0, 2); 13 barrier_wait(&barrier); 14 pthread_barrier_wait(&B); 15 return NULL; 16 } 17 Thread2(void * x)18void *Thread2(void *x) { 19 barrier_wait(&barrier); 20 pthread_barrier_wait(&B); 21 return NULL; 22 } 23 main()24int main() { 25 barrier_init(&barrier, 2); 26 pthread_t t; 27 pthread_create(&t, NULL, Thread1, NULL); 28 Thread2(0); 29 pthread_join(t, NULL); 30 pthread_barrier_destroy(&B); 31 return 0; 32 } 33 34 // CHECK: WARNING: ThreadSanitizer: data race 35