gpt4 book ai didi

c++ - sleep boost::thread 无限期地从另一个线程唤醒?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:59:38 26 4
gpt4 key购买 nike

是否可以让一个 boost::thread 在其工作完成后无限期地休眠,然后从另一个 boost::thread 唤醒它?

使用 while(1) 非常适合专用服务器,我希望线程以 100% 的速度运行所有内核,但我正在编写一个在桌面上运行的 websocket++ 服务器,因此我只希望 boost::thread 在它们实际有工作要做时运行,这样我就可以在我的桌面上做其他工作而不会影响性能。

我见过其他例子,其中 boost::thread 被设置为 sleep() 持续一段时间,但我不想花试图找到最佳常数的时间;此外,我需要 websocket++ 服务器在接收到要处理的数据时尽快响应。

如果这是可能的,如何通过多个线程尝试唤醒来完成?

最佳答案

此机制由所谓的条件变量实现,请参阅 boost::condition_variable .本质上,等待线程将在锁定的互斥体上休眠,直到另一个线程发出条件信号,从而将其解锁。

注意虚假唤醒。有时,等待线程会在没有收到信号的情况下被唤醒。这意味着您仍然应该放置一个 while 循环来检查谓词(或条件)以区分真实唤醒和虚假唤醒。

关于c++ - sleep boost::thread 无限期地从另一个线程唤醒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18295437/

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