1
我有一個API必須將未來結果(future/shared_future)返回給客戶端。在有些情況下,我知道我可以多次返回「相同的未來」對象,因爲我有一個關聯的std :: promise,可以/應該將結果傳遞給多個客戶端(僞代碼)。std ::承諾通知多個客戶端
std::future<int> getVal()
{
//I have a list of promises kept
if (promiseExists)
{
//this throws an exception because get_future() can be called only one time, unfortunately
return existingPromise.get_future();
}
....
}
的問題是,你不能叫get_future()多次在同一實例,或同樣的承諾獲得總得shared_future對象。
getVal有一個解決方法來返回一個shared_future(從構建shared_future from existingPromise.get_future()獲得),但在這種情況下,我必須緩存shared_future對象與承諾對象,並且它會更簡單的只是有一個承諾對象,以某種方式能夠將未來多次返回給不同的客戶端。有沒有辦法做到這一點 ?
我有一個使用回調的api,所以我必須自己遵守這個承諾,以便我可以在api完成時設置結果 – Gmt