Topic

Coroutines

A collection of 3 issues

Boost.ASIO coroutines. Event. Работа над ошибками.

В предыдущей статье был описан элемент синхронизации Event, аналогичный оному из cppcoro. Ошибка была в том, что весь механизм синхронизации был перенесен из cppcoro в другую среду без какой-либо валидации. Правильным бы на тот момент решением было бы использовать в атомарных операциях memory order по умолчанию (std::memory_order_seq_
18 min read

Boost.ASIO coroutines. Event.

В этот раз реализую простейший примитив синхронизации двух короутин. Его назначение довольно просто: одна короутина приостанавливается на ожидании сигнала, другая этот сигнал отправляет. По сути это аналог пары std::future/std::promise. Короутины могут выполняться в разных потоках, ожидать сигнала может только одна короутина. #include "event.h" Event event; auto
2 min read

Boost.ASIO coroutines. Scheduler.

Для реализации примитивов синхронизации короутин (например sequence_barrier) нужен механизм для приостановки короутины до следующей итерации цикла событий. По сути это аналог функции pthread_yield для синхронного кода. Пример использования выглядит как-то так: do { co_await schedule(executor); do_some_thing(); } while(condition); а типовая реализация так: struct Awaiter { boost:
1 min read

Subscribe to Заметочки

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe