小编use*_*195的帖子

pthread_cond_wait()同时唤醒两个线程

我想更好地了解如何使用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需要处理的一些初始化选项.

c multithreading pthreads

6
推荐指数
2
解决办法
4189
查看次数

动态编程算法:在网格上行走

为即将到来的考试提供了一些练习题.我已经给出了这个问题的解决方案,这里描述了这个问题 在此输入图像描述

解决方案确实没有解释.

我很好奇我怎么能在这里得到答案.我想我可以创建一堆子问题

从A-> C,A-> D,A-> E遍历,然后基于先前的解决方案找出A-> B. 但我很失落.

algorithm dynamic-programming

4
推荐指数
1
解决办法
1030
查看次数