#include #include #include #include #include int mkresult(){ sleep(random() % 5); return random() + 1; } int global_count = 0; int results[2]; pthread_mutex_t our_mutex = PTHREAD_MUTEX_INITIALIZER; void* thread_function(void* input){ int result = mkresult(); pthread_mutex_lock(&our_mutex); results[global_count++] = -result; pthread_mutex_unlock(&our_mutex); } void main(){ results[0] = 0; results[1] = 0; srandom(time(0)); pthread_t t; pthread_mutex_lock(&our_mutex); pthread_create(&t, 0, thread_function, 0); int result = mkresult(); results[global_count++] = result; pthread_mutex_unlock(&our_mutex); pthread_join(t, 0); printf("results[0] = %d\nresults[1] = %d\n", results[0], results[1]); }