简单来讲std::async
是对std::future、std::promise和std::packaged_task
的一个包装,将异步操作用std::packaged_task
包装起来,然后将异步操作的结果放到std::promise
中,在外层通过std::future.get/wait来获取结果。
函数原型
1
2
3
4
5
6 std::async(std::launch::async | std::launch::deferred, f, args...)
第一个参数是线程的创建策略;
std::launch::async:在调用async就开始创建线程
std::launch::deferred:延迟加载方式创建线程。调用async时不创建线程,直到调用了future的get或者wait时才创建线程。
第二个参数是线程函数;
第三个参数是线程函数的参数;
示例
1 | #include <iostream> |
输出结果
1 | 1 |