std::thread 线程中执行
时间: 2023-10-15 16:25:03 浏览: 79
线程thread
在std::thread中执行的代码可以是一个函数、一个lambda表达式或者是一个仿函数。通过传入函数名、lambda表达式或者创建一个仿函数对象作为参数来创建std::thread对象。比如,可以将一个函数名作为参数传入std::thread构造函数,然后在新线程中执行该函数。同样地,也可以使用lambda表达式或者创建一个仿函数对象来执行特定的代码。
下面是一些示例代码:
1. 使用函数作为参数创建std::thread对象:
```cpp
void myFunc(int param) {
// 执行一些代码
}
int main() {
int param = 10;
std::thread t(myFunc, param);
t.join();
return 0;
}
```
2. 使用lambda表达式作为参数创建std::thread对象:
```cpp
int main() {
int param = 10;
std::thread t([param]() {
// 执行一些代码,使用param作为参数
});
t.join();
return 0;
}
```
3. 使用仿函数对象作为参数创建std::thread对象:
```cpp
class MyFunctor {
public:
void operator()(int param) const {
// 执行一些代码,使用param作为参数
}
};
int main() {
int param = 10;
MyFunctor functor;
std::thread t(functor, param);
t.join();
return 0;
}
```
以上示例展示了在std::thread中执行不同类型的代码,包括函数、lambda表达式和仿函数对象。您可以根据具体的需求选择合适的方式来执行代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [【C++ 包裹类 std::thread】探索C++11 std::thread:如何使用它来创建、销毁和管理线程](https://blog.csdn.net/qq_21438461/article/details/128630169)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [C++:std::thread:线程用法](https://blog.csdn.net/u013620306/article/details/128565614)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文