Как стать автором
Обновить

Комментарии 7

Сопрограммы в с++20 там task<> и co_await не оно?
На мое удивление информацию про такую реализацию я нашёл с трудом, поэтому решил поделиться с вами.
Странно, похоже Вы где-то не там искали. Насколько я представляю, именно так сейчас работает большинство реальных многопоточных серверов (и не только HTTP). Как пример, посмотрите реализацию TCP и HTTP сервера в библиотеке POCO. Да и упомянутый Вами Apache тоже использует thread pool
Когда я занимался написанием сервера, я не знал ни о пуле потоков, ни о конечном автомате, поэтому искал скорее «не так» а не «не там». За ссылки спасибо, буду смотреть)
Статья про worker pool vs fork process была бы актуальна для 2010 года, а в 2021 хотелось бы увидеть вступление о причинах побудивших писать собственный http сервер.
Причина — учебный проект)
Статья написана не написана на широкую публику и не показывает что-то новое. Статья скорее для тех кто так же, как и я в свое время, искал способы написания многопоточки в сервере.

Полезно для начала было бы изучить опыт предшественников. Подход 1 поток на каждого клиента был признан несостоятельным еще в прошлом веке, и сформулирован как C10K problem в 1999 году.


Примерно с 2005 в C++ доступна boost.asio позволяющая писать кросс-платформенные асинхронные многопоточных сетевые приложения, в том числе и http серверы.


После массового перехода на C++11 стали доступны такие библиотеки как boost.beast, restinio. Наверно после принятия сопрограмм в C++20 появятся или уже появились новые версии.


Ngnix, насколько я помню, написан на C, совсем другом языке. На C++ сделан Envoy, если хочется посмотреть на устройство proxy сервера.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории