diff options
Diffstat (limited to 'linuxthreads/Examples/ex1.c')
-rw-r--r-- | linuxthreads/Examples/ex1.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/linuxthreads/Examples/ex1.c b/linuxthreads/Examples/ex1.c new file mode 100644 index 0000000..c399fab --- /dev/null +++ b/linuxthreads/Examples/ex1.c @@ -0,0 +1,36 @@ +/* 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" + +void * process(void * arg) +{ + int i; + fprintf(stderr, "Starting process %s\n", (char *) arg); + for (i = 0; i < 10000; i++) { + write(1, (char *) arg, 1); + } + return NULL; +} + +int main() +{ + int retcode; + pthread_t th_a, th_b; + void * retval; + + retcode = pthread_create(&th_a, NULL, process, "a"); + if (retcode != 0) fprintf(stderr, "create a failed %d\n", retcode); + retcode = pthread_create(&th_b, NULL, process, "b"); + if (retcode != 0) fprintf(stderr, "create b failed %d\n", retcode); + retcode = pthread_join(th_a, &retval); + if (retcode != 0) fprintf(stderr, "join a failed %d\n", retcode); + retcode = pthread_join(th_b, &retval); + if (retcode != 0) fprintf(stderr, "join b failed %d\n", retcode); + return 0; +} + |