Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我从函数返回而不调用pthread\u mutex\u unlock会发生什么?_C_Pthreads_Posix_Mutex - Fatal编程技术网

如果我从函数返回而不调用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();
这很好(但很愚蠢)