boost :: asio Coroutine TS: Как объединить / выбрать несколько сопрограмм? - PullRequest
0 голосов
/ 17 февраля 2020

Я учусь на повышение :: asio Coroutine TS недавно. но я не знаю, как присоединиться к 2 запущенным сопрограммам. Я гуглил, но безрезультатно.

1 Ответ

0 голосов
/ 21 апреля 2020

Я также ищу лучшее решение. Но у меня есть уродливый обходной путь ...

По сути, я использую пару переданных по каналу fds для реализации механизма asyn c -vent. Так что он работает только на unix -подобных системах.

Вы можете взглянуть на код здесь .

Использование:

asio::io_context ctx;

AsyncEvent event{ctx.get_executor()};
event.Reset();

asio::co_spawn(ctx.get_executor(), /* coroutine that calls `co_await event.AsyncSet();' */, asio::detached);

co_await event.AsyncWait();

В этом же каталоге есть защелка.

...