为什么我的pthread_cond_wait和signal会像它一样工作?我似乎陷入了僵局

时间:2014-04-23 07:18:46

标签: c pthreads mutex

void * thread1()
{
   pthread_mutex_lock(mutex1);
   pthread_mutex_lock(mutex2);

   while (someCondition)
       pthread_cond_wait(&condVar, &condMutex1);

   pthread_mutex_unlock(mutex1);
   pthread_mutex_unlock(mutex2); 

}   

void * thread1()
{
   pthread_mutex_lock(mutex1);
   pthread_mutex_lock(mutex2);

   if (someCondition)
       pthread_cond_signal(&condVar, &cmutex1);

   pthread_mutex_unlock(mutex1);
   pthread_mutex_unlock(mutex2); 

}      

我实际上有很多代码行,但这是一个简化版本。现在,似乎我的程序已陷入僵局,我无法弄清楚为什么......我发誓我认为我正在使用它。 1.)当我这样做时,我的mutex1被锁定了。 2.)我确定它与我正在使用的条件变量相同。 (我通过共享内存访问条件变量)或者更好的是,有没有办法在不同的进程中识别条件变量?

0 个答案:

没有答案