/* * Exemplo 2: FUTEX_WAKE. Thread 0 acorda N-1 threads. */ #define _GNU_SOURCE #include #include #include #include #include "myfutex.h" #define N 10 int futex_addr = 0; void* f_thread(void *v) { futex_wait(&futex_addr, 0); printf("Thread %d.\n", (int) v); return NULL; } void* f_thread0(void *v) { sleep(5); futex_wake(&futex_addr, N-1); printf("Thread 0.\n"); return NULL; } int main() { pthread_t thr[N]; int i; for (i=1; i < N; i++) pthread_create(&thr[i], NULL, f_thread, (void*) i); pthread_create(&thr[0], NULL, f_thread0, NULL); pthread_exit(0); }