c++ 11 创建线程
时间: 2023-11-18 09:07:53 浏览: 34
在C++11中,创建线程非常容易。使用`std::thread`类,你可以创建一个新的线程并将其与一个可调用对象(比如函数指针、成员函数指针或lambda表达式)绑定。
下面是一个简单的示例:
```c++
#include <iostream>
#include <thread>
void myThreadFunc(int arg) {
std::cout << "Hello from thread! Argument: " << arg << std::endl;
}
int main() {
int myArg = 42;
std::thread myThread(myThreadFunc, myArg);
// 等待线程结束
myThread.join();
return 0;
}
```
在这个示例中,我们定义了一个名为“myThreadFunc”的函数,它接受一个整数参数并在控制台上输出一条消息。然后,在main函数中,我们创建了一个新的线程,将“myThreadFunc”函数和一个整数参数绑定到它上面。我们使用“join”函数等待线程执行完毕。
你也可以使用lambda表达式来创建线程:
```c++
#include <iostream>
#include <thread>
int main() {
int myArg = 42;
std::thread myThread([&myArg](){
std::cout << "Hello from thread! Argument: " << myArg << std::endl;
});
// 等待线程结束
myThread.join();
return 0;
}
```
在这个示例中,我们创建了一个lambda表达式,它捕获了“myArg”变量,并在控制台上输出一条消息。然后,我们将这个lambda表达式绑定到一个新的线程上,并使用“join”函数等待线程执行完毕。
需要注意的是,创建线程可能会抛出异常,因此你需要使用try-catch块来捕获它们。另外,如果你忘记调用“join”函数,程序可能会崩溃,因为线程可能会在程序结束之前继续运行。