inf*_*inf 13 c++ multithreading asynchronous
考虑我有lamba foo只做一些东西,不需要返回任何东西.当我这样做:
std::future<T> handle = std::async(std::launch::async, foo, arg1, arg2);
Run Code Online (Sandbox Code Playgroud)
一切都运行良好,lamba将在一个新的线程中产生.然而,当我不存储std::future其std::async返回时,foo将在主线程中运行,并阻止它.
std::async(std::launch::async, foo, arg1, arg2);
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
Woj*_*cha 17
来自just::thread 文档:
如果策略
std::launch::async然后INVOKE(fff,xyz...)在其自己的线程上运行.std::future当此线程完成时,返回的内容将准备就绪,并将保存函数调用引发的返回值或异常.与返回的异步状态相关联的最后一个对象的析构函数std::future将阻塞,直到将来准备好.
在
std::async(std::launch::async, foo, arg1, arg2);
Run Code Online (Sandbox Code Playgroud)
返回的未来不会分配到任何地方,它的析构函数阻塞直到foo完成.
| 归档时间: |
|
| 查看次数: |
2593 次 |
| 最近记录: |