Я хотел бы реализовать метод, как это:emulate std :: async с std :: launch :: sync?
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
Вы правы. Лучшим решением было бы изменить код повышения, чтобы делать то, что вы хотите. –