std20 新建线程
时间: 2024-10-08 17:01:32 浏览: 19
`std::thread` 是 C++11 标准引入的一个库,它提供了一种方便的方式来创建和管理线程。`std20` 并不是一个标准版本,通常指代的是 C++20 标准,其中对 `std::thread` 类进行了增强和完善。
在 C++20 中,`std::thread` 的使用保持了基本一致,但增加了几个新的特性。例如:
1. **构造函数改进**:你可以直接通过 lambda 表达式、函数指针或成员函数名创建线程,使得代码更简洁易读。
```cpp
// 使用lambda表达式创建线程
std::thread my_thread([]() { do_something(); });
// 或者使用成员函数
std::thread my_thread(&MyClass::do_something);
```
2. **异常处理**:C++20 引入了 `std::async` 和 `std::launch` 属性,它们可以在主线程之外安全地启动异步任务,同时支持更好地捕获和传播异常。
3. **线程隔离**:`std::execution::sequenced_policy` 可以用来限制线程执行顺序,避免并行操作带来的数据竞争问题。
4. **线程池支持**:虽然不是标准库的一部分,一些第三方库如 `ThreadPool` 提供了线程池功能,可以批量提交任务,提高性能。
如果你需要创建一个线程,可以这样做:
```cpp
#include <thread>
#include <iostream>
void worker_function()
{
std::cout << "Worker thread is running...\n";
}
int main()
{
// 创建新线程并运行worker_function
std::thread t(worker_function);
// 等待线程结束
t.join();
return 0;
}
阅读全文