parent
010982f750
commit
3a23fb1e04
|
@ -55,4 +55,3 @@ int main(int argc, const char *argv[]) {
|
||||||
// CHECK: array[0] = 142
|
// CHECK: array[0] = 142
|
||||||
// CHECK: array[1] = 143
|
// CHECK: array[1] = 143
|
||||||
// CHECK: done
|
// CHECK: done
|
||||||
// CHECK-NOT: WARNING: ThreadSanitizer
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// RUN: %clang_tsan %s -o %t
|
// RUN: %clang_tsan %s -o %t
|
||||||
// RUN: %run %t 2>&1 | FileCheck %s
|
// RUN: %run %t 2>&1 | FileCheck %s --implicit-check-not='ThreadSanitizer'
|
||||||
|
|
||||||
// TODO(yln): fails on one of our bots, need to investigate
|
// TODO(yln): fails on one of our bots, need to investigate
|
||||||
// REQUIRES: disabled
|
// REQUIRES: disabled
|
||||||
|
@ -37,5 +37,4 @@ int main(int argc, const char *argv[]) {
|
||||||
|
|
||||||
// CHECK: Hello world.
|
// CHECK: Hello world.
|
||||||
// CHECK: Data destructor.
|
// CHECK: Data destructor.
|
||||||
// CHECK-NOT: WARNING: ThreadSanitizer
|
|
||||||
// CHECK: Done.
|
// CHECK: Done.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// RUN: %clang_tsan %s -o %t
|
// RUN: %clang_tsan %s -o %t
|
||||||
// RUN: %run %t 2>&1 | FileCheck %s
|
// RUN: %run %t 2>&1 | FileCheck %s --implicit-check-not='ThreadSanitizer'
|
||||||
|
|
||||||
// TODO(yln): fails on one of our bots, need to investigate
|
// TODO(yln): fails on one of our bots, need to investigate
|
||||||
// REQUIRES: disabled
|
// REQUIRES: disabled
|
||||||
|
@ -14,16 +14,18 @@ int main(int argc, const char *argv[]) {
|
||||||
fprintf(stderr, "Hello world.\n");
|
fprintf(stderr, "Hello world.\n");
|
||||||
|
|
||||||
dispatch_queue_t q = dispatch_queue_create("my.queue", DISPATCH_QUEUE_SERIAL);
|
dispatch_queue_t q = dispatch_queue_create("my.queue", DISPATCH_QUEUE_SERIAL);
|
||||||
dispatch_semaphore_t sem = dispatch_semaphore_create(0);
|
|
||||||
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, q);
|
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, q);
|
||||||
long long interval_ms = 10;
|
long long interval_ms = 10;
|
||||||
dispatch_source_set_timer(timer, dispatch_time(DISPATCH_TIME_NOW, 0), interval_ms * NSEC_PER_MSEC, 0);
|
dispatch_source_set_timer(timer, dispatch_time(DISPATCH_TIME_NOW, 0), interval_ms * NSEC_PER_MSEC, 0);
|
||||||
|
|
||||||
|
dispatch_semaphore_t sem = dispatch_semaphore_create(0);
|
||||||
dispatch_source_set_event_handler(timer, ^{
|
dispatch_source_set_event_handler(timer, ^{
|
||||||
fprintf(stderr, "timer\n");
|
fprintf(stderr, "timer\n");
|
||||||
global++;
|
global++;
|
||||||
|
|
||||||
if (global > 50) {
|
if (global > 50) {
|
||||||
dispatch_semaphore_signal(sem);
|
dispatch_semaphore_signal(sem);
|
||||||
|
dispatch_suspend(timer);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
dispatch_resume(timer);
|
dispatch_resume(timer);
|
||||||
|
@ -34,5 +36,6 @@ int main(int argc, const char *argv[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CHECK: Hello world.
|
// CHECK: Hello world.
|
||||||
// CHECK-NOT: WARNING: ThreadSanitizer
|
// CHECK: timer
|
||||||
// CHECK: Done.
|
// CHECK: Done.
|
||||||
|
// CHECK-NOT: timer
|
||||||
|
|
Loading…
Reference in New Issue