c++创建多线程的有甚么方法
在C++中,创建多线程的方法有以下几种:
1. 使用`std::thread`库:C++11引入了`std::thread`库,它提供了一种简单的方法来创建和管理线程。可使用`std::thread`类创建一个新的线程,例如:
```cpp
#include
void myThreadFunction() {
// 线程履行的代码
}
int main() {
std::thread myThread(myThreadFunction);
// 履行其他任务
myThread.join(); // 等待线程结束
return 0;
}
```
2. 使用函数指针或函数对象:可以将一个函数指针或函数对象传递给`std::thread`的构造函数,例如:
```cpp
#include
#include
void myThreadFunction(int arg) {
std::cout << "Thread running with arg: " << arg << std::endl;
}
int main() {
int arg = 42;
std::thread myThread(myThreadFunction, arg);
// 履行其他任务
myThread.join(); // 等待线程结束
return 0;
}
```
3. 使用lambda表达式:可使用lambda表达式来创建一个匿名的线程函数,例如:
```cpp
#include
#include
int main() {
int arg = 42;
std::thread myThread([&arg]() {
std::cout << "Thread running with arg: " << arg << std::endl;
});
// 履行其他任务
myThread.join(); // 等待线程结束
return 0;
}
```
4. 使用`std::async`库:C++11还引入了`std::async`库,它可以方便地异步履行函数,并返回一个`std::future`对象,用于获得函数的返回值。`std::async`可以自动选择线程或任务池来履行函数,例如:
```cpp
#include
#include
int myThreadFunction() {
// 线程履行的代码
return 42;
}
int main() {
std::future
// 履行其他任务
int returnValue = result.get(); // 等待线程结束并获得返回值
std::cout << "Return value: " << returnValue << std::endl;
return 0;
}
```
这些方法都可以用来创建多线程并履行相应的操作。选择哪一种方法取决于具体的需求和代码结构。
TOP