std::thread lamba
时间: 2024-12-06 07:15:33 浏览: 11
书中的 std::thread
`std::thread` 是 C++ 标准库中的一个线程处理类,它允许你在 C++ 中创建并管理并发线程。Lambda 表达式是一种简洁的方式,可以用于定义匿名函数,特别是在需要作为线程目标(线程函数)的时候。
当你想要在 `std::thread` 中使用 Lambda 表达式时,你可以这样做:
```cpp
#include <iostream>
#include <thread>
// 使用 Lambda 表达式定义一个简单的线程任务
void print_numbers(int n) {
for (int i = 0; i < n; ++i) {
std::cout << i << '\n';
}
}
int main() {
// 创建一个新的线程,该线程将执行 Lambda 表达式的功能
std::thread thread_function([](int n) {
print_numbers(n); // Lambda 函数体
}, 5); // 第二个参数传递给 Lambda,这里是线程要运行的次数
// 主线程继续执行其他任务
std::this_thread::sleep_for(std::chrono::seconds(2));
// 确保线程完成后再结束主线程
thread_function.join();
return 0;
}
```
在这个例子中,Lambda 表达式 `[&] (int n) { print_numbers(n); }` 定义了一个接受整数参数的函数,然后我们将其传递给了 `std::thread` 的构造函数。当线程启动时,它会执行这个 Lambda 函数。
阅读全文