@sehe use_promise кажется очень интересным. Я поискал
документацию по этому вопросу и нашел несколько ваших сообщений, например этот. Но
как я могу имитировать boost::wait_for_all с помощью use_promise? Также
похоже, что существует проблема, когда две задачи ждут завершения одной единственной
задачи. – YzEdwin Комментировал вчера
Вы можете сделать группу асинхронных операций (
Код: Выделить всё
make_parallel_groupзатем инициируйте его с помощью use_promise. Между прочим,
Код: Выделить всё
experimental::promiseКод: Выделить всё
operator()группировать/откладывать поочередно – sehe Комментировал вчера
@sehe Наконец-то у меня use_promise работает с make_parallel_group.
Раньше я использовал asio::deferred. Полагаю, use_promise больше
похожа на нетерпеливую оценку? Но все же самая большая проблема — это форк. Например,
у меня есть две независимые задачи A и B, завершение которых зависит от задачи C
. Все три события должны выполняться только один раз. Это можно
легко сделать с помощью boost::shared_future, поскольку я мог бы просто передать
Код: Выделить всё
shared_futureиспользую co_spawn и обе задачи co_await задачи C, задача C будет
выполнена дважды. – YzEdwin Комментарий 20 часов назад
Точка общей зависимости действительна: asio::experimental::promise доступна только для перемещения и не может быть ожидаема дважды. В этом отношении это больше похоже на завернутую асинхронную операцию (согласно проверке концепции is_async_operation).
- Можем ли мы обернуть обещание в копируемый/общий тип обещания?
- Как бы мы это сделали?
- А вообще требуется экспериментальное::promise?
Подробнее здесь: https://stackoverflow.com/questions/797 ... operations
Мобильная версия