c++中异步执行函数的代码实例
时间: 2024-03-01 22:52:58 浏览: 76
下面是一个实现异步执行函数的 C++ 代码示例:
```c++
#include <iostream>
#include <future>
void someFunction() {
std::cout << "异步执行函数的线程ID: " << std::this_thread::get_id() << std::endl;
// 模拟函数执行耗时
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << "异步执行函数结束" << std::endl;
}
int main() {
std::cout << "主线程ID: " << std::this_thread::get_id() << std::endl;
// 异步执行函数
std::future<void> future = std::async(std::launch::async, someFunction);
// 主线程继续执行其他操作
std::cout << "主线程继续执行其他操作" << std::endl;
// 获取异步函数的返回值
future.get();
return 0;
}
```
在上面的代码中,我们定义了一个名为 `someFunction()` 的函数,它会在另一个线程中异步执行。我们使用 `std::async()` 函数来创建一个 `std::future` 对象,从而异步执行 `someFunction()` 函数。`std::async()` 函数的第一个参数是 `std::launch::async`,表示要异步执行函数。第二个参数是要执行的函数名。`std::async()` 函数会返回一个 `std::future` 对象,我们可以使用它来获取异步函数的返回值。在主线程中,我们可以继续执行其他操作,而不必等待异步函数的执行完毕。最后,我们通过调用 `future.get()` 函数来等待异步函数的执行完毕,并获取返回值(此处返回值为空)。
阅读全文