我想實現這樣的方法:用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
你是對的。最好的解決辦法是修改升壓代碼以做你想做的事。 –