假设某个条件变量“cond”与一个互斥变量“mutex”关联。如果一个线程在调用pthread_cond_wait(&cond,&mutex)
之后正在睡眠cond
,并且锁定的另一个线程完成锁定,那么在调用pthread_mutex_unlock(&mutex)
之前还是之后,该线程调用pthread_cond_signal(&cond)
是否有关系?如果它调用pthread_cond_signal(&cond)
,它甚至需要解锁互斥锁,因为睡眠线程无论如何都会获取互斥锁?发送条件变量(pthreads)
编辑:根据https://computing.llnl.gov/tutorials/pthreads/#ConVarOverview,“在调用pthread_cond_signal()后未能解锁互斥锁可能无法完成匹配的pthread_cond_wait()例程(它将保持阻塞状态)。”我想那时候,解锁,也许只有在之后,才是必需的。
+1回答你自己的问题。 – 2011-03-03 01:44:46