如果我从函数返回而不调用pthread\u mutex\u unlock会发生什么?
假设我锁定了一个名为如果我从函数返回而不调用pthread\u mutex\u unlock会发生什么?,c,pthreads,posix,mutex,C,Pthreads,Posix,Mutex,假设我锁定了一个名为wfg pthread_mutex_lock(&wfg); //and then I return from the function return 0; 互斥锁会保持锁定吗 是的,它保持锁定状态,下一个试图锁定它的人将无法锁定。其他人(在同一线程中)随后可以在其他地方解锁它,但是当获取和释放分离时,很难验证程序的正确性,因此有点容易出错。包括一个可能有助于跟踪此类问题和其他更微妙问题的工具 在C++中,这是考虑的最佳时机,是的,它仍然是锁定的,而下一个试图锁定它的
wfg
pthread_mutex_lock(&wfg);
//and then I return from the function
return 0;
互斥锁会保持锁定吗 是的,它保持锁定状态,下一个试图锁定它的人将无法锁定。其他人(在同一线程中)随后可以在其他地方解锁它,但是当获取和释放分离时,很难验证程序的正确性,因此有点容易出错。包括一个可能有助于跟踪此类问题和其他更微妙问题的工具
<>在C++中,这是考虑的最佳时机,是的,它仍然是锁定的,而下一个试图锁定它的人将无法这么做。其他人(在同一线程中)随后可以在其他地方解锁它,但是当获取和释放分离时,很难验证程序的正确性,因此有点容易出错。包括一个可能有助于跟踪此类问题和其他更微妙问题的工具
<>在C++中,这是考虑 的最佳时机:互斥锁仍然保持锁定,直到从锁中得到的线程调用<代码> pthRead MutExxOnLooun>/代码>。功能与此无关。你可以吃点像这样的东西
pthread_mutex_t wfg;
...
void razzle()
{
pthread_mutex_lock(&wfg);
}
void dazzle()
{
pthread_mutex_unlock(&wfg);
}
...
razzle();
... do stuff ...
dazzle();
这很好(但很愚蠢)。互斥锁将保持锁定状态,直到从获得锁的线程对其调用
pthread\u mutex\u unlock
。功能与此无关。你可以吃点像这样的东西
pthread_mutex_t wfg;
...
void razzle()
{
pthread_mutex_lock(&wfg);
}
void dazzle()
{
pthread_mutex_unlock(&wfg);
}
...
razzle();
... do stuff ...
dazzle();
这很好(但很愚蠢)