#include #include #include #include /* Inicializacao estatica. NP significa Non-portable Para usar este inicializador, devemos compilar o programa informando a flag -D_GNU_SOURCE */ pthread_mutex_t lock = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP; void* f_thread(void *v) { /* Mutexes do tipo ERRORCHECK verificam no momento do unlock se o mutex está efetivamente lockado. Caso isto não seja verdade, a função pthread_mutex_lock retorna imediatamente EPERM, sinalizando o erro para quem a chamou. */ if (pthread_mutex_unlock(&lock) == EPERM) { printf("Unlock de mutex não locado\n"); } return NULL; } int main() { pthread_t thr; pthread_create(&thr, NULL, f_thread, NULL); pthread_join(thr, NULL); printf("Finalizando programa\n"); return 0; }