2011-01-23 23 views

回答

6

是的,它仍然被锁定,下一个试图锁定它的人将无法做到这一点。其他人(在同一个线程中)随后可以在其他地方解锁它,但是当采集和释放分离时很难验证程序的正确性,因此容易出错。 Valgrind包含一个工具,可能有助于追踪此类问题和其他更微妙的问题。

在C++中,这是考虑RAII

7

互斥保持锁定状态,直到pthread_mutex_unlock被称为它从所获得的锁的线程的最佳时机。函数与它无关。你可以有类似的东西

pthread_mutex_t wfg; 
... 
void razzle() 
{ 
    pthread_mutex_lock(&wfg); 
} 

void dazzle() 
{ 
    pthread_mutex_unlock(&wfg); 
} 

... 
razzle(); 
... do stuff ... 
dazzle(); 

而且这将是罚款(但愚蠢)。

相关问题