diff options
Diffstat (limited to 'test/pthread/ex1.c')
-rw-r--r-- | test/pthread/ex1.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/pthread/ex1.c b/test/pthread/ex1.c new file mode 100644 index 0000000..4d9de03 --- /dev/null +++ b/test/pthread/ex1.c @@ -0,0 +1,35 @@ +/* Creates two threads, one printing 10000 "a"s, the other printing + 10000 "b"s. + Illustrates: thread creation, thread joining. */ + +#include <stddef.h> +#include <stdio.h> +#include <unistd.h> +#include "pthread.h" + +static void *process(void * arg) +{ + int i; + printf("Starting process %s\n", (char *)arg); + for (i = 0; i < 10000; i++) + write(1, (char *) arg, 1); + return NULL; +} + +#define sucfail(r) (r != 0 ? "failed" : "succeeded") +int main(void) +{ + int pret, ret = 0; + pthread_t th_a, th_b; + void *retval; + + ret += (pret = pthread_create(&th_a, NULL, process, (void *)"a")); + printf("create a %s %d\n", sucfail(pret), pret); + ret += (pret = pthread_create(&th_b, NULL, process, (void *)"b")); + printf("create b %s %d\n", sucfail(pret), pret); + ret += (pret = pthread_join(th_a, &retval)); + printf("join a %s %d\n", sucfail(pret), pret); + ret += (pret = pthread_join(th_b, &retval)); + printf("join b %s %d\n", sucfail(pret), pret); + return ret; +} |