1/* Compiler options: 2#notarget: cris*-*-elf 3#cc: additional_flags=-pthread 4#output: Starting process a\naaaaaaaaStarting process b\nababbbbbbbbb 5 6 The output will change depending on the exact syscall sequence per 7 thread, so will change with glibc versions. Prepare to modify; use 8 the latest glibc. 9 10 This file is from glibc/linuxthreads, with the difference that the 11 number is 10, not 10000. */ 12 13/* Creates two threads, one printing 10000 "a"s, the other printing 14 10000 "b"s. 15 Illustrates: thread creation, thread joining. */ 16 17#include <stddef.h> 18#include <stdio.h> 19#include <unistd.h> 20#include "pthread.h" 21 22static void * 23process (void *arg) 24{ 25 int i; 26 fprintf (stderr, "Starting process %s\n", (char *) arg); 27 for (i = 0; i < 10; i++) 28 { 29 write (1, (char *) arg, 1); 30 } 31 return NULL; 32} 33 34int 35main (void) 36{ 37 int retcode; 38 pthread_t th_a, th_b; 39 void *retval; 40 41 retcode = pthread_create (&th_a, NULL, process, (void *) "a"); 42 if (retcode != 0) 43 fprintf (stderr, "create a failed %d\n", retcode); 44 retcode = pthread_create (&th_b, NULL, process, (void *) "b"); 45 if (retcode != 0) 46 fprintf (stderr, "create b failed %d\n", retcode); 47 retcode = pthread_join (th_a, &retval); 48 if (retcode != 0) 49 fprintf (stderr, "join a failed %d\n", retcode); 50 retcode = pthread_join (th_b, &retval); 51 if (retcode != 0) 52 fprintf (stderr, "join b failed %d\n", retcode); 53 return 0; 54} 55