【发布时间】:2011-07-07 17:18:46
【问题描述】:
假设某个条件变量“cond”与互斥变量“mutex”相关联。如果一个线程在调用pthread_cond_wait(&cond,&mutex) 之后在cond 上休眠,并且另一个锁定mutex 的线程已完成,那么该线程在调用pthread_cond_signal(&cond) 之前还是之后调用pthread_mutex_unlock(&mutex) 是否重要?如果它调用pthread_cond_signal(&cond),它是否甚至需要解锁互斥锁,因为睡眠线程无论如何都会获取互斥锁?
编辑:根据https://computing.llnl.gov/tutorials/pthreads/#ConVarOverview,“调用 pthread_cond_signal() 后未能解锁互斥锁可能不允许匹配的 pthread_cond_wait() 例程完成(它将保持阻塞状态)。”我想那时,解锁,也许只是之后,是必需的。
【问题讨论】:
-
+1 回答您自己的问题。
标签: c pthreads posix mutex condition-variable