std :: обещать уведомить нескольких клиентов

У меня есть API, который должен возвращать будущий результат (future / shared_future) клиентам. Есть случаи, когда я знаю, что могу вернуть объект «одно и то же будущее» несколько раз, потому что у меня есть связанный 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 из существующегоPromise.get_future ()), но в этом случае мне нужно кэшировать объект shared_future с объектом обещания, и было бы проще просто иметь объект обещания, на котором как-то, чтобы иметь возможность возвращать будущее несколько раз различным клиентам. Есть ли способ сделать это ?

1

Решение

Нет.

Почему вам нужно сдержать обещание? Только поставщик результата нуждается в обещании, все потребители результата нуждаются только в (общем) будущем.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]