在boost 1.52中查看新的boost::async
实现,我对launch::deferred
的实现有点不确定:
else if (int(policy) & int(launch::deferred))
{
packaged_task<R> pt( boost::forward<F>(f) );
BOOST_THREAD_FUTURE<R> ret = pt.get_future();
return ::boost::move(ret);
}
我不太明白这是如何工作的。一旦broken_promise
被销毁,这总是会抛出packaged_task
例外吗?
答案 0 :(得分:1)