gpt4 book ai didi

c++ - 用于线程的标准库版本 "Wait for Alert/Event"

转载 作者:行者123 更新时间:2023-11-30 01:16:28 27 4
gpt4 key购买 nike

C++ 是否有通过某种 Wait+Wake 进行线程同步的概念?等待事件、警报、对象等?诸如 WaitForSingleObject、WaitOnAddress 等之类的东西?我唯一能找到的是 std::thread::join,以及 fence/sync 东西,比如锁和 std::atomic。 C++ 的线程还有更多内容吗? future 还会有更多吗?

最佳答案

如果你只需要在线程之间发送信号,C++11 有 Condition Variables .条件变量将锁定需要访问此变量的线程,直到它们被最初锁定资源的线程“发出信号”。假设您可以使用线程级锁定,您可以构建更高级别的构造,例如 WaitFor。

如果您想要 C# 任务之类的东西,而不是标准库中的 C++11。在 C++11 中,只有线程原语被添加到语言中,它们的语义处于“线程级别”。在不添加某些语言功能的情况下尝试实现它们充其量是困惑的。

如果条件变量不满足,我的下一个建议是使用回调反转程序控制。 OpenMAX 和 OpenSL ES 等实时处理库不使用“事件”,它们在同一线程上使用回调。这些回调是您 Hook 代码以向设备发送更多数据或将数据快速存储在其他地方以供以后处理的地方。

最后看看您是否可以更改您的问题以使其适合现有库。像 https://www.threadingbuildingblocks.org/ 这样的图书馆几乎是 C++ 线程的黄金标准。如果存在针对常见问题的良好解决方案,那么他们很有可能会拥有一个。

关于c++ - 用于线程的标准库版本 "Wait for Alert/Event",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26500292/

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