/* * Problema do barbeiro dorminhoco utilizando futex. */ #include #include #include #include #include "myfutex.h" #include #define N_CLIENTES 10 #define N_CADEIRAS 5 void* f_barbeiro(void *v) { while(1) { printf("Barbeiro cortou o cabelo de um cliente.\n"); } return NULL; } void* f_cliente(void* v) { int id = *(int*) v; sleep(id%3); return NULL; } int main() { pthread_t thr_clientes[N_CLIENTES], thr_barbeiro; int i, id[N_CLIENTES]; for (i = 0; i < N_CLIENTES; i++) { id[i] = i; pthread_create(&thr_clientes[i], NULL, f_cliente, (void*) &id[i]); } pthread_create(&thr_barbeiro, NULL, f_barbeiro, NULL); for (i = 0; i < N_CLIENTES; i++) pthread_join(thr_clientes[i], NULL); /* Barbeiro é assassinado */ return 0; }