brintos

brintos / llvm-project-archived public Read only

0
0
Text · 657 B · c8da783 Raw
38 lines · cpp
1// RUN: %clangxx_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s2#include <pthread.h>3#include <stdlib.h>4#include <stdio.h>5#include <sched.h>6 7struct Cache {8  int x;9  explicit Cache(int x)10    : x(x) {11  }12};13 14int g_other;15 16Cache *CreateCache() {17  g_other = rand();18  return new Cache(rand());19}20 21void *Thread1(void *x) {22  static Cache *c = CreateCache();23  if (c->x == g_other)24    exit(1);25  return 0;26}27 28int main() {29  pthread_t t[2];30  pthread_create(&t[0], 0, Thread1, 0);31  pthread_create(&t[1], 0, Thread1, 0);32  pthread_join(t[0], 0);33  pthread_join(t[1], 0);34  fprintf(stderr, "PASS\n");35}36 37// CHECK-NOT: WARNING: ThreadSanitizer: data race38