Jar*_*ock 7 c++ asynchronous future c++11
我有一种情况,我有一个std::future<some_type>调用API A,但需要提供API B与std::future<void>:
std::future<some_type> api_a();
void api_b(std::future<void>& depend_on_this_event);
Run Code Online (Sandbox Code Playgroud)
如果没有提议的功能,例如.then()或when_all(),是否有任何有效的方法可以抛弃附加到a的值std::future<T>,只留下std::future<void>表示事件完成的底层?
像下面这样的东西可以工作,但可能效率低下:
auto f = api_a();
f.wait();
auto void_f = std::async(std::launch::defer, []{});
api_b(void_f);
Run Code Online (Sandbox Code Playgroud)
你可以得到的最好的可能是:
auto f = api_a();
auto void_f = std::async(std::launch::deferred,[fut = std::move(f)]{ fut.wait();});
api_b(void_f);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4975 次 |
| 最近记录: |