1*dd28bebdSAlex Bennée #include <assert.h> 2*dd28bebdSAlex Bennée #include <stdlib.h> 3*dd28bebdSAlex Bennée #include <stdio.h> 4*dd28bebdSAlex Bennée #include <string.h> 5*dd28bebdSAlex Bennée #include <unistd.h> 6*dd28bebdSAlex Bennée #include <inttypes.h> 7*dd28bebdSAlex Bennée #include <pthread.h> 8*dd28bebdSAlex Bennée #include <sys/wait.h> 9*dd28bebdSAlex Bennée #include <sched.h> 10*dd28bebdSAlex Bennée 11*dd28bebdSAlex Bennée void checked_write(int fd, const void *buf, size_t count) 12*dd28bebdSAlex Bennée { 13*dd28bebdSAlex Bennée ssize_t rc = write(fd, buf, count); 14*dd28bebdSAlex Bennée assert(rc == count); 15*dd28bebdSAlex Bennée } 16*dd28bebdSAlex Bennée 17*dd28bebdSAlex Bennée void *thread1_func(void *arg) 18*dd28bebdSAlex Bennée { 19*dd28bebdSAlex Bennée int i; 20*dd28bebdSAlex Bennée char buf[512]; 21*dd28bebdSAlex Bennée 22*dd28bebdSAlex Bennée for(i=0;i<10;i++) { 23*dd28bebdSAlex Bennée snprintf(buf, sizeof(buf), "thread1: %d %s\n", i, (char *)arg); 24*dd28bebdSAlex Bennée checked_write(1, buf, strlen(buf)); 25*dd28bebdSAlex Bennée usleep(100 * 1000); 26*dd28bebdSAlex Bennée } 27*dd28bebdSAlex Bennée return NULL; 28*dd28bebdSAlex Bennée } 29*dd28bebdSAlex Bennée 30*dd28bebdSAlex Bennée void *thread2_func(void *arg) 31*dd28bebdSAlex Bennée { 32*dd28bebdSAlex Bennée int i; 33*dd28bebdSAlex Bennée char buf[512]; 34*dd28bebdSAlex Bennée for(i=0;i<20;i++) { 35*dd28bebdSAlex Bennée snprintf(buf, sizeof(buf), "thread2: %d %s\n", i, (char *)arg); 36*dd28bebdSAlex Bennée checked_write(1, buf, strlen(buf)); 37*dd28bebdSAlex Bennée usleep(150 * 1000); 38*dd28bebdSAlex Bennée } 39*dd28bebdSAlex Bennée return NULL; 40*dd28bebdSAlex Bennée } 41*dd28bebdSAlex Bennée 42*dd28bebdSAlex Bennée void test_pthread(void) 43*dd28bebdSAlex Bennée { 44*dd28bebdSAlex Bennée pthread_t tid1, tid2; 45*dd28bebdSAlex Bennée 46*dd28bebdSAlex Bennée pthread_create(&tid1, NULL, thread1_func, "hello1"); 47*dd28bebdSAlex Bennée pthread_create(&tid2, NULL, thread2_func, "hello2"); 48*dd28bebdSAlex Bennée pthread_join(tid1, NULL); 49*dd28bebdSAlex Bennée pthread_join(tid2, NULL); 50*dd28bebdSAlex Bennée printf("End of pthread test.\n"); 51*dd28bebdSAlex Bennée } 52*dd28bebdSAlex Bennée 53*dd28bebdSAlex Bennée int main(int argc, char **argv) 54*dd28bebdSAlex Bennée { 55*dd28bebdSAlex Bennée test_pthread(); 56*dd28bebdSAlex Bennée return 0; 57*dd28bebdSAlex Bennée } 58