c++中异步执行带参数函数的代码实例
时间: 2024-03-01 15:53:03 浏览: 129
下面是一个实现异步执行带参数函数的 C++ 代码示例:
```c++
#include <iostream>
#include <future>
void someFunction(int num) {
std::cout << "异步执行函数的线程ID: " << std::this_thread::get_id() << std::endl;
// 模拟函数执行耗时
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << "异步执行函数结束,参数为:" << num << std::endl;
}
int main() {
std::cout << "主线程ID: " << std::this_thread::get_id() << std::endl;
// 异步执行带参数的函数
int num = 10;
std::future<void> future = std::async(std::launch::async, someFunction, num);
// 主线程继续执行其他操作
std::cout << "主线程继续执行其他操作" << std::endl;
// 获取异步函数的返回值
future.get();
return 0;
}
```
在上面的代码中,我们在异步执行函数 `someFunction()` 中增加了一个整数类型的参数 `num`。在使用 `std::async()` 函数异步执行函数时,我们需要在函数名后面加上要传递的参数。例如 `std::async(std::launch::async, someFunction, num)` 会将参数 `num` 传递给异步执行的函数 `someFunction()`。在主线程中,我们可以继续执行其他操作,而不必等待异步函数的执行完毕。最后,我们通过调用 `future.get()` 函数来等待异步函数的执行完毕,并获取返回值(此处返回值为空)。
阅读全文