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>
就可以了。
我有一个函数 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>
就可以了。