Home | History | Annotate | Download | only in tsan
      1 // RUN: %clangxx_tsan %s -o %t
      2 // RUN: %run %t 2>&1 | FileCheck %s
      3 
      4 // bench.h needs pthread barriers which are not available on OS X
      5 // UNSUPPORTED: darwin
      6 
      7 #include "bench.h"
      8 
      9 const int kMutex = 10;
     10 pthread_mutex_t mtx[kMutex];
     11 
     12 void thread(int tid) {
     13   for (int i = 0; i < bench_niter; i++) {
     14     int idx = (i % kMutex);
     15     if (tid == 0)
     16       idx = kMutex - idx - 1;
     17     pthread_mutex_lock(&mtx[idx]);
     18     pthread_mutex_unlock(&mtx[idx]);
     19   }
     20 }
     21 
     22 void bench() {
     23   for (int i = 0; i < kMutex; i++)
     24     pthread_mutex_init(&mtx[i], 0);
     25   start_thread_group(2, thread);
     26 }
     27 
     28 // CHECK: DONE
     29 
     30