brintos

brintos / llvm-project-archived public Read only

0
0
Text · 683 B · 7d9d491 Raw
34 lines · cpp
1// RUN: %clangxx_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s2#include "test.h"3#include <sys/types.h>4#include <sys/stat.h>5#include <fcntl.h>6 7void *Thread1(void *x) {8  int f = open("/dev/random", O_RDONLY);9  close(f);10  barrier_wait(&barrier);11  return NULL;12}13 14void *Thread2(void *x) {15  barrier_wait(&barrier);16  int f = open("/dev/random", O_RDONLY);17  close(f);18  return NULL;19}20 21int main() {22  barrier_init(&barrier, 2);23  pthread_t t[2];24  pthread_create(&t[0], NULL, Thread1, NULL);25  pthread_create(&t[1], NULL, Thread2, NULL);26  pthread_join(t[0], NULL);27  pthread_join(t[1], NULL);28  fprintf(stderr, "OK\n");29}30 31// CHECK-NOT: WARNING: ThreadSanitizer: data race32 33 34