std::thread 的用法
时间: 2023-10-12 18:17:50 浏览: 251
C++11中std::packaged_task的使用详解
std::thread 是 C++11 中的多线程库,用于创建并管理线程。它的基本用法如下:
```c++
#include <iostream>
#include <thread>
void myFunction() {
std::cout << "Hello from thread!\n";
}
int main() {
// 创建一个新线程并开始运行 myFunction 函数
std::thread t1(myFunction);
// 等待线程运行结束
t1.join();
std::cout << "Main thread exiting\n";
return 0;
}
```
在上面的代码中,我们首先包含了两个头文件:iostream 和 thread。然后我们定义了一个函数 `myFunction()`,它将在新线程中运行。在主函数 `main()` 中,我们首先创建了一个新线程 `t1`,并将 `myFunction()` 作为参数传递给它。
接下来,我们调用 `t1.join()`,这会等待线程 `t1` 运行结束。最后,我们输出一条消息并返回 0。
注意,在使用 std::thread 的时候,需要注意以下几点:
1. 必须在创建线程之前定义好要运行的函数,并在创建线程时将其作为参数传递给 std::thread。
2. 在主线程结束之前,必须等待所有子线程结束,否则可能会导致程序崩溃或者结果不确定。
3. 线程对象一旦被创建,就不能复制或者赋值给其他线程对象,只能移动。
除了上面的基本用法之外,std::thread 还有很多其他的用法,比如传递参数、获取线程 ID、设置线程优先级等。详细的使用方法可以参考 C++ 标准库的文档。
阅读全文