假设某个条件变量“cond”与互斥变量“mutex”相关联。如果一个线程cond在调用后正在休眠pthread_cond_wait(&cond,&mutex),并且另一个已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() 例程完成(它将保持阻塞)。 " 我想那时,解锁,也许只是之后,是必需的。