c++ std::jthread
时间: 2024-09-13 14:19:06 浏览: 59
jthread:连接和协作可中断线程的C ++类(应变为std
`std::jthread`是C++17标准库中引入的一个特性,它并不是直接存在于头文件`<thread>`中,而是作为对`std::thread`的一种增强,用于处理线程间通信(joinable threads)。`std::jthread`实际上是一个包装器,它提供了一种更友好的方式来管理和操作异步任务,特别是当需要在某个时间点等待所有并发任务完成时。
使用`std::jthread`,你可以创建一个`jthread`对象,然后像普通线程那样启动一个任务,但是它的`join()`方法会在整个工作生命周期结束后自动调用,这使得管理并发更容易。当你不再需要某个`jthread`时,可以调用它的`~jthread()`析构函数或者显式地调用`detach()`方法将其从当前作用域移除。
举个例子:
```cpp
#include <iostream>
#include <jthread/jthread.hpp>
void worker() {
for (int i = 0; i < 5; ++i) {
std::cout << "Worker thread: " << i << '\n';
jthread::sleep(1);
}
}
int main() {
jthread task(worker);
// 启动任务
task.join();
return 0;
}
```
阅读全文