thread_name2.cc revision 6d1862363c88c183b0ed7740fca876342cf0474b
1// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 2#include <pthread.h> 3#include <stdio.h> 4#include <unistd.h> 5 6#if defined(__FreeBSD__) 7#include <pthread_np.h> 8#define pthread_setname_np pthread_set_name_np 9#endif 10 11int Global; 12 13void *Thread1(void *x) { 14 sleep(1); 15 Global++; 16 return 0; 17} 18 19void *Thread2(void *x) { 20 pthread_setname_np(pthread_self(), "foobar2"); 21 Global--; 22 return 0; 23} 24 25int main() { 26 pthread_t t[2]; 27 pthread_create(&t[0], 0, Thread1, 0); 28 pthread_create(&t[1], 0, Thread2, 0); 29 pthread_setname_np(t[0], "foobar1"); 30 pthread_join(t[0], NULL); 31 pthread_join(t[1], NULL); 32} 33 34// CHECK: WARNING: ThreadSanitizer: data race 35// CHECK: Thread T1 'foobar1' 36// CHECK: Thread T2 'foobar2' 37