查看boost::async
boost 1.52 中的新实现,我有点不确定它的实现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
被销毁,这不会总是抛出异常吗?