c++11 std::thread
时间: 2024-11-06 07:12:22 浏览: 5
C++11引入了`std::thread`库,这是一个用于处理线程的标准库。它提供了一种方便的方式来创建、管理和同步线程,使得并发编程变得更加简单。`std::thread`类允许你在代码中创建一个新的线程,并将一个函数或者方法作为目标线程的任务(也称为线程执行体)。使用`std::thread`的主要步骤包括:
1. 创建线程:通过`std::thread`构造函数指定一个函数指针以及需要传递给该函数的参数。例如:
```cpp
void my_function(int param) {
// 线程执行的具体代码
}
std::thread thread_instance(my_function, 42);
```
2. 启动线程:创建线程后,需要调用它的`start()`方法启动线程。这个操作是异步的,意味着主线程会继续执行而不会等待新线程完成。
3. 等待线程结束:如果你想让主线程等待新线程执行完毕,可以使用`join()`方法。如果不想阻塞,也可以使用`detach()`方法使线程独立运行。
4. 错误检查:在使用`std::thread`时,要注意检查异常,因为线程的生命周期可能会遇到各种错误。
相关问题
C++ std::thread lambda
C++11 引入了 std::thread 类,可以用于创建新线程。使用 lambda 表达式可以方便地在线程中执行函数。
例如,以下代码创建了一个新线程并执行 lambda 表达式:
```
#include <iostream>
#include <thread>
int main() {
std::thread t([](){
std::cout << "Hello from thread!" << std::endl;
});
t.join();
return 0;
}
```
输出:
```
Hello from thread!
```
在 lambda 表达式中,我们可以访问外部变量,但需要注意线程安全问题。
vs c++ std::thread用例
C++11引入了std::thread库,它提供了一种创建和管理多线程的方式。使用std::thread,我们可以轻松地实现并发编程。
下面是一个使用std::thread的简单示例:
```c++
#include <iostream>
#include <thread>
void threadFunction()
{
std::cout << "Hello from thread!" << std::endl;
}
int main()
{
std::thread t(threadFunction);
std::cout << "Hello from main!" << std::endl;
t.join();
return 0;
}
```
在上面的代码中,我们定义了一个函数`threadFunction`,它将在新线程中运行。我们使用`std::thread`类创建一个新线程,并将`threadFunction`作为参数传递给它。然后,在主线程中打印一条消息,最后调用`t.join()`等待子线程执行完毕。
阅读全文