| |
| #include <stdio.h> |
| #include <pthread.h> |
| |
| int r1 = 0, r2 = 0; |
| |
| void do_one_thing ( int* ntimes ) |
| { |
| int i, j, x; |
| for (i = 0; i < 4; i++) { |
| printf ("doing one thing\n"); |
| for (j = 0; j < 100000; j++) x = x + i; |
| (*ntimes)++; |
| } |
| } |
| |
| void do_another_thing ( int* ntimes ) |
| { |
| int i, j, x; |
| for (i = 0; i < 4; i++) { |
| printf ("doing another\n"); |
| for (j = 0; j < 100000; j++) x = x + i; |
| (*ntimes)++; |
| } |
| } |
| |
| void do_wrap_up ( int one_times, int another_times ) |
| { |
| int total = one_times + another_times; |
| printf("wrap up: one thing %d, another %d, total %d\n", |
| one_times, another_times, total ); |
| } |
| |
| int main ( void ) |
| { |
| pthread_t t1, t2; |
| pthread_create( &t1, NULL, (void*)do_one_thing, (void*)&r1 ); |
| pthread_create( &t2, NULL, (void*)do_another_thing, (void*)&r2 ); |
| // while (1) {} |
| pthread_join(t1, NULL); |
| pthread_join(t2, NULL); |
| do_wrap_up(r1,r2); |
| return 0; |
| } |