Async C ++ с влакна

Бих искал да помоля общността да сподели своите мисли и опит относно изграждането на I / O обвързани беккенд услуги на C ++ върху влакна (куп съпрограми).

Цикълът на асинхронни отговори / заявки / потоци (мислейки за grpc-подобна сървърна услуга) е доста труден за писане в C ++.

Базиран на обратен разговор (като оригиналния подход boost.asio) е доста бъркотия: трудно е да се разсъждава относно живота, програмен поток и обработка на грешки. https://vlc.onl/

C ++ 20 Coroutines не са съвсем тук и трябва да имате известен опит, за да пренапишете кода с единична резба, базиран на Coroutine. И тук също може да съществува висящ референтен проблем. https://getappvalley.com/

Последният подход е влакната. Изглежда много лесно да се мисли и да се работи (като boost.fibers). Човек пише само код с "единична резба", който под капака се превръща в прекъсваем / възобновяем код. Обработката на програмния поток и грешките са същите като в програмата с единична резба. https://tweakbox.mobi/