我想实现这样的方法:用std :: launch :: sync模拟std :: async?
boost::unique_future<int> foo()
{
return defer([=] // call this lambda on boost::unique_future<int>::get();
{
return prime(10);
});
}
我知道boost::promise
和boost::packaged_task
和set_wait_callback
,但是因为其返回的未来需要要么这不会工作的参考?
我知道有std::async
和std::launch::sync
,但如何使用boost和vs2010来模拟它?
std::unique_future<int> foo()
{
return std::async(std::launch::sync, [=]
{
return prime(10);
});
}
一个市长问题。如果get()没有被调用,那么诺言就会泄露。 – ronag
如果你使用shared_ptr那么你会得到一个循环依赖,它仍然会泄漏。 –
ronag
你是对的。最好的解决办法是修改升压代码以做你想做的事。 –