gpt4 book ai didi

c++ - 可以使用 boost::threads 中的 std::this_thread* 函数吗?

转载 作者:可可西里 更新时间:2023-11-01 18:39:33 28 4
gpt4 key购买 nike

混合和匹配来自 boost::threadstd::thread 的东西是否可以,还是应该为每个使用一组函数?

我问是因为我的代码使用了 boost::thread,但是我发现 boost::this_thread::sleep_for 在设置系统时间倒退,但 std::this_thread::sleep_for 确实如此,所以我想更改我的 sleep 函数调用并避免将我所有的 boost::thread 更改为std::thread 如果可能的话。

最佳答案

在实践中,当且仅当/因为实现使用相同的实现(例如,Linux 上的 pthread),您可能会侥幸逃脱。

但是,您破坏不变量。简单示例:Boost Thread 的中断点将无法使用非 boost 同步原语(包括 std::this_thread::sleep_*)。

因此我建议不要实际混合库来控制相关线程,以免你想冒险遇到意外 ¹

当然,如果库有完全独立的关注点(例如,它们在内部使用线程,“在黑盒子里”),那么将这些库组合到一个进程中应该没有问题。


¹ 我可以看到死锁的发生,数据竞争/泄漏不需要大量的想象力(想想线程本地数据支持/call_once/set_value_at_thread_exit...)

关于c++ - 可以使用 boost::threads 中的 std::this_thread* 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29710001/

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