summaryrefslogtreecommitdiff
path: root/tests/once1.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/once1.c')
-rw-r--r--tests/once1.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/once1.c b/tests/once1.c
new file mode 100644
index 0000000..f4164ac
--- /dev/null
+++ b/tests/once1.c
@@ -0,0 +1,35 @@
+#include <pthread.h>
+#include <stdio.h>
+
+pthread_once_t once = PTHREAD_ONCE_INIT;
+
+void
+myfunc(void)
+{
+ printf("only see this once\n");
+}
+
+void *
+mythread(void * arg)
+{
+ int rc = pthread_once(&once, myfunc);
+ printf("returned %d\n", rc);
+
+ return 0;
+}
+
+int
+main()
+{
+ int rc;
+ pthread_t t1, t2;
+
+ rc = pthread_create(&t1, NULL, mythread, NULL);
+ printf("pthread_create returned %d\n", rc);
+
+ rc = pthread_create(&t2, NULL, mythread, NULL);
+ printf("pthread_create returned %d\n", rc);
+
+ Sleep(2000);
+ return 0;
+}