gpt4 book ai didi

c++ - 有多少 mutex 和 cond 变量?

转载 作者:太空宇宙 更新时间:2023-11-04 15:52:01 24 4
gpt4 key购买 nike

我在 pthread 池上工作,将有五个独立的线程和一个队列。所有五个线程都在竞争从队列中获取作业,我知道我需要执行锁定/解锁和等待/信号的基本思想。

但我不确定我应该拥有多少互斥量和条件变量。现在我只有一个 mutex 和 cond 变量,所有五个线程都将使用它。

最佳答案

一个互斥量和至少一个条件变量。

一个互斥锁,因为有一个“东西”(即内存片段)可以同步访问:所有工作人员和推送工作的线程之间的共享状态。

一个条件变量,嗯,一个或多个线程需要等待的条件。至少你需要一个条件变量来等待新工作,这里的条件是:“还有更多的事情要做吗?” (或者相反:“工作队列是空的吗?”)。


一个更具实质性的答案是,互斥量和关联的条件变量之间存在一对多关系,共享状态和互斥量之间存在一对一关系。根据您告诉我们的内容以及您正在学习的内容,我建议您在设计中仅使用一个共享状态。何时或如果您需要不止一种状态,我建议您寻找一些更高级别的概念(例如 channel 、 future / promise )以建立抽象。

在任何情况下,都不要使用具有不同互斥锁的相同条件变量。

关于c++ - 有多少 mutex 和 cond 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366930/

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