c++结束被分离的线程
时间: 2023-08-05 08:20:06 浏览: 96
被分离的线程无法通过 `join()` 方法来等待其结束,因此需要使用其他方法来结束它。一种常见的方法是使用一个标志变量来控制线程的执行,当标志变量为 true 时,线程继续执行,当标志变量为 false 时,线程退出。具体实现可以参考以下示例代码:
```
#include <iostream>
#include <thread>
#include <atomic>
std::atomic<bool> flag(true); // 标志变量
void Materials() {
while (flag) {
std::cout << "Thread is running...\n";
// 线程执行的代码
}
}
int main() {
std::thread myThread(Materials);
// 分离线程
myThread.detach();
// 等待一段时间
std::this_thread::sleep_for(std::chrono::seconds(5));
// 设置标志变量为 false,结束线程
flag = false;
return 0;
}
```
在上面的示例代码中,线程函数 `Materials()` 会不断地执行,直到标志变量 `flag` 被设置为 false,才会退出循环,从而结束线程。在主函数中,我们将线程对象 `myThread` 分离,并等待一段时间后,将标志变量 `flag` 设置为 false,从而结束线程的执行。
阅读全文