gpt4 book ai didi

c - 调用 pthread_cond_signal(...) 然后调用 pthread_cond_wait(...) 会唤醒服务员吗?

转载 作者:行者123 更新时间:2023-11-30 17:02:32 25 4
gpt4 key购买 nike

所以我在网上搜索了一些答案,但似乎没有什么可以清楚地回答它。我的问题很简单,比如说,我需要 5 个工作线程进入队列,然后向它们的主线程(线程 6)发出信号,表明它们都在队列中准备工作。由于我的程序的其余部分的工作方式,如果我想要完成的事情确实有效,那就最好了,也就是说:

因此,如果我让老板线程锁定,看到队列没有完全满,老板将pthread_cond_wait(...);并等待,直到它已经满了。现在,所有工作线程将进入队列并等待,一旦最后一个线程进入,他将向主线程发出信号,然后等待。那么,在最后一个 worker 发出信号通知他等待时,老板还会等到最后一个助手到达等待吗?因为我不希望老板在最后一个线程真正等待之前做任何事情。因此,最终线程将不会命中 pthread_mutex_unlock(...) 他将命中 pthread_cond_wait(...) 并且我想要验证一下这会吵醒我们老大。预先感谢,我希望我的问题很清楚,我倾向于过度解释一切:/

最佳答案

老板可以等待 worker 发送的信号n次。每次醒来时,它都会检查队列长度,如果未满则再次等待。在这种情况下最好使用信号量。

关于c - 调用 pthread_cond_signal(...) 然后调用 pthread_cond_wait(...) 会唤醒服务员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36530283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com