]> git.saurik.com Git - apple/libpthread.git/blobdiff - tests/once.c
libpthread-218.1.3.tar.gz
[apple/libpthread.git] / tests / once.c
diff --git a/tests/once.c b/tests/once.c
deleted file mode 100644 (file)
index a7005fe..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#define __DARWIN_NON_CANCELABLE 0
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-static pthread_once_t once = PTHREAD_ONCE_INIT;
-static int x = 0;
-
-void cancelled(void)
-{
-    printf("thread cancelled.\n");
-}
-
-void oncef(void)
-{
-    printf("in once handler: %p\n", pthread_self());
-    sleep(5);
-    x = 1;
-}
-
-void* a(void *ctx)
-{
-    printf("a started: %p\n", pthread_self());
-    pthread_cleanup_push((void*)cancelled, NULL);
-    pthread_once(&once, oncef);
-    pthread_cleanup_pop(0);
-    printf("a finished\n");
-    return NULL;
-}
-
-void* b(void *ctx)
-{
-    sleep(1); // give enough time for a() to get into pthread_once
-    printf("b started: %p\n", pthread_self());
-    pthread_once(&once, oncef);
-    printf("b finished\n");
-    return NULL;
-}
-
-int main(void)
-{
-    pthread_t t1;
-    if (pthread_create(&t1, NULL, a, NULL) != 0) {
-        fprintf(stderr, "failed to create thread a.");
-        exit(1);
-    }
-
-    pthread_t t2;
-    if (pthread_create(&t2, NULL, b, NULL) != 0) {
-        fprintf(stderr, "failed to create thread b.");
-        exit(1);
-    }
-
-    sleep(2);
-    pthread_cancel(t1);
-
-    pthread_join(t1, NULL);
-    pthread_join(t2, NULL);
-    exit(0);
-}
\ No newline at end of file