标准函数std::async:
模板函数async异步运行函数f(可能在一个单独的线程中,它可能是线程池的一部分)并返回一个最终将保存该函数调用结果的std :: future .
有两个发布政策std::launch::async and std::launch::deferred . 在我的编译器( GCC 6.2 )标准库中,第一个总是创建一个新线程,第二个在调用线程上进行延迟评估 . 默认情况下使用 std::launch::deferred
.
当指定 std::launch::async
时,是否有一些实现使用大小等于可用硬件线程的线程池,以避免在递归算法中使用 std::async
时创建两个多线程?
2 回答
它随Visual Studio一起提供的Microsoft编译器和C运行时 .
我正在使用这种方法
dispatch
是asynk(..., async)
;post
是asynk(..., deferred)
;