gpt4 book ai didi

c++ - Boost:等到工作线程等待条件变量

转载 作者:行者123 更新时间:2023-11-28 03:41:18 25 4
gpt4 key购买 nike

情况

我有一个由 condition_variable 触发的工作线程来做一些工作。基本上它工作得非常好,正如预期的那样。

问题

但是存在一个问题:启动工作线程的线程可能会获得足够长的时间片来填充数据队列并在工作线程尚未准备好时通知condition_variable em>,即当它还没有到达 condition_variable.wait() 行时。

有什么方法可以让我等待工作线程直到第一次调用 wait() ,这样可以保证当我通知 worker ?

最佳答案

没有理由这样做。当工作线程准备就绪时,它将完成工作。它不需要由条件变量触发,因为它永远不会等待。

等待已经发生的事情是编码错误。如果您甚至想过这样做,您根本就不了解条件变量。

在线程等待条件变量之前,它必须确保有它需要等待的东西。那件事必须受到与条件变量关联的互斥量的保护。而当线程从条件变量wait返回时,通常必须重新测试是否需要再次等待。

关于c++ - Boost:等到工作线程等待条件变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9157637/

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