C++ promise/future:从函数中 return 哪个?

C++ promise/future: Which to return from a function?

我有一个函数 return 是对 std::promise 的引用:

std::shared_ptr<std::promise<void>> play();

(更多信息:该函数在某些设备上播放媒体,return 值表示播放完成的时间。如果第二次调用播放,则在承诺上设置一个值 returned 第一次,创建一个新的承诺并为第二次调用 returned)

调用者然后可以捕获值并等待未来:

auto this_future = play()->get_future();
this_future.wait();

return 对承诺的引用是否有意义,或者我应该 return 未来,以便调用函数不必调用 get_future() ?

由于 play() 的实现 发布,我想你很可能 return 将来,并且该功能应该与承诺本身,很可能在不同的线程中。这种设计的基本原理源于这样一个事实,即 promise 是生产者端,而 future 是消费者端——所以函数会产生一个值,通过 promise 实例设置它,它会通过 [= 通知 future 结果已经到达。 11=].

但是请注意,您不必 return 一个 std::shared_ptr<std::future<T>>std::future<T> 就可以了。