我想更好地了解如何使用pthread_cond_wait()及其工作原理.我只想对我在本网站上看到的答案进行一些澄清.
答案是本页的最后一个回复
理解pthread_cond_wait()和pthread_cond_signal()
我想知道三个线程的外观如何.想象一下,线程1想要告诉线程2和线程3唤醒
例如
pthread_mutex_t mutex;
pthread_cond_t condition;
Run Code Online (Sandbox Code Playgroud)
线程1:
pthread_mutex_lock(&mutex);
/*Initialize things*/
pthread_mutex_unlock(&mutex);
pthread_cond_signal(&condition); //wake up thread 2 & 3
/*Do other things*/
Run Code Online (Sandbox Code Playgroud)
线程2:
pthread_mutex_lock(&mutex); //mutex lock
while(!condition){
pthread_cond_wait(&condition, &mutex); //wait for the condition
}
pthread_mutex_unlock(&mutex);
/*Do work*/
Run Code Online (Sandbox Code Playgroud)
线程3:
pthread_mutex_lock(&mutex); //mutex lock
while(!condition){
pthread_cond_wait(&condition, &mutex); //wait for the condition
}
pthread_mutex_unlock(&mutex);
/*Do work*/
Run Code Online (Sandbox Code Playgroud)
我想知道这样的设置是否有效.假设线程2和3依赖于线程1需要处理的一些初始化选项.
为即将到来的考试提供了一些练习题.我已经给出了这个问题的解决方案,这里描述了这个问题

解决方案确实没有解释.
我很好奇我怎么能在这里得到答案.我想我可以创建一堆子问题
从A-> C,A-> D,A-> E遍历,然后基于先前的解决方案找出A-> B. 但我很失落.