gpt4 book ai didi

c++ - 如何在使用 C++11 线程模型或 tbb 线程类时取消特定线程?

转载 作者:行者123 更新时间:2023-11-28 02:42:32 25 4
gpt4 key购买 nike

在使用 C++11 线程模型或 TBB 线程类时,如何取消其他线程(如果您使用的是 pthread 库,则可以使用 pthread_cancel 取消其他线程)?ps:C++11线程模型或tbb线程类中有没有线程取消点的概念如pthread?

最佳答案

TBB 提供线程类作为 C++03 的兼容层,尽可能接近 C++11。其他库(例如 )也提供了一个没有 cancel() 方法的线程类。

因此问题是“如何在 C++ 中取消线程”。答案是:没有内置取消,只有 interrupt politely .

pthread_cancel 对于一般的 C++ 程序来说是个坏主意,因为它不考虑对象的生命周期。

编写您自己的取消点,它读取取消标志,如果已设置,则抛出异常以正确展开堆栈。

std::atomic<bool> is_cancelled;
void check_cancel() {
if(is_cancelled)
throw std::runtime_error("cancelled");
}

关于c++ - 如何在使用 C++11 线程模型或 tbb 线程类时取消特定线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25473251/

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