std::jthread
时间: 2023-11-09 07:59:22 浏览: 92
std::jthread是C++20标准引入的一个新的线程类型,它是一种可停止的线程。与std::thread相比,std::jthread不仅可以在析构时自动加入线程,还能在其生命周期内调用stop方法来请求线程停止执行。
std::jthread的声明方式与std::thread相似,可以通过构造函数创建线程对象,并指定要执行的函数或可调用对象作为参数。示例如下:
```cpp
#include <iostream>
#include <chrono>
#include <thread>
void myThreadFunction()
{
for (int i = 0; i < 5; ++i) {
std::cout << "Thread is running: " << i << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
int main()
{
std::jthread myThread(myThreadFunction); // 创建一个std::jthread对象,并指定要执行的函数
if (myThread.joinable()) {
myThread.join(); // 等待线程执行完毕
}
return 0;
}
```
在上面的例子中,通过std::jthread创建了一个新的线程对象myThread,并将myThreadFunction作为参数传递给构造函数。线程开始执行后,会依次输出"Thread is running: 0"到"Thread is running: 4"。在main函数中,我们使用join方法等待线程执行完毕。
阅读全文