我正在用C编写一个程序,其中有3个函数,A,B和C.我有一个静态互斥锁作为全局锁定对这些函数的访问。功能A,B和C,并以任意顺序被称为从多线程的话,我的代码如下:基本死锁问题,多个函数中的一个互斥体
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int A() {
pthread_mutex_lock(&mutex);
... do some processing...
pthread_mutex_unlock(&mutex);
return anInt;
}
int B() {
pthread_mutex_lock(&mutex);
... do some processing...
pthread_mutex_unlock(&mutex);
return anInt;
}
int C() {
pthread_mutex_lock(&mutex);
... do some processing...
pthread_mutex_unlock(&mutex);
return anInt;
}
什么可能导致的僵局?
你能发表更多的代码吗?除了缺少返回语句外,还有什么看起来是正确的。 – hmjd 2013-05-10 21:46:59
在调用'pthread_mutex_unlock'之前,是否有通过代码退出函数的任何路径?或者你的一个函数调用锁中的其他函数之一? – simonc 2013-05-10 21:47:35
@simonc不,A,B和C按顺序调用,但是按不同的线程调用,所以可能按顺序调用 – user1660675 2013-05-10 22:16:20