Pull to refresh
8
0
Илья Казаков @discodum

SWE @ YADRO

Send message

Большое спасибо за ваш комментарий! Сейчас опишу все как есть:

  1. Я еще раз перечитал статью и не нашел, где я говорил, что хочу выжать максимум производительности.

  2. Мы не используем Asio на самом нагруженном пути, лишь во вспомогательных задачах.

Вы правы!

The spawn() function is a high-level wrapper over the Boost.Coroutine library.

К сожалению ещё не встречался с этим корутинами, обязательно обращу на них внимание :) Спасибо!

Думаю стоило добавить что мы ещё не используем C++20 :) Я точно помню что видел в asio поддержку boost::fiber, однако сейчас что-то не могу найти

https://think-async.com/Asio/asio-1.28.0/doc/asio/reference.html

В итоге на C++17 остаётся использовать только колбеки или std::future из коробки

Я имел ввиду Windows IO Conpletion Ports. asio называет этот функционал winiocp в исходниках, поэтому так и написал :) К сожалению я не уделял много внимания тому как работает asio на винде, знаю только то что asio::random_access_file будет вам доступен если вы на windows благодаря io completion ports. Упомянул я об этом только для того чтобы дать понять что эта фича библиотеки работает не на всех платформах.

Вопрос отличный!) Дело в том что если смотреть на внутренности asio то там в некоторых случаях так и происходит. Вы можете создать asio::thread_pool и использовать его только с одним диском. Да на самом деле создать поток, и запустить в нем asio::io_context сделает то же самое. И потом использовать thread_pool или io_context (библиотека называет их execution_contexts) вместе с нужным диском. В каждом контексте действительно есть своя очередь которая и будет разгребаться потоком/потоками.

Если говорить про размер asio, позволю себе отметить что standalone версия библиотеки представляет из себя header only библиотеку что, по моему скромному мнению, достаточно легковесно:)

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer, System Software Engineer
Middle
C++
Python
Git
Linux
OOP