7 pthread_t thread1, thread2;
9 static void * thread1_doit(void *unused) {
16 static void * thread2_doit(void *sem_count) {
17 int start_num = *((int*)sem_count);
18 for(int i = 0; i < start_num + 1; i++) {
25 int main(int argc, char* argv[]) {
27 printf("Expected usage: %s START_NUM\n", argv[0]);
31 int start_num = atoi(argv[1]);
33 sem_init(&sem1, 0, start_num);
34 sem_init(&sem2, 0, 1);
36 pthread_create(&thread1, NULL, &thread1_doit, NULL);
37 pthread_create(&thread2, NULL, &thread2_doit, &start_num);
39 pthread_join(thread1, NULL);
40 pthread_join(thread2, NULL);