刚刚接触linux不久,在多线程编程时遇到了互斥锁死锁的情况,分析原因是同一个锁连续两次加锁,导致程序被锁死。
代码如下:
void f(void)
{
...
pthread_mutex_lock(&mutex);
共用变量a
pthread_mutex_unlock(&mutex);
...
}
void rt1(void)
{
while(1)
{
pthread_mutex_lock(&mutex);
...
共用变量a
...
f();
pthread_mutex_unlock(&mutex);
}
}
避免这种情况的方法是,尽量在线程中加锁/解锁,尽可能不再函数中使用
pthread_mutex_lock。
。