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

Пользователь

Отправить сообщение
Дело в том что заголовок нужно иметь в виде непрерывной последовательности байт. Вариант отправки множества мелких кусочков не рассматриваем, т.к. scatter/gather io для коротких буферов работает не очень быстро. Вообще быстрее всего работает отправка одного длинного буфера, но в реальности это чаще всего и неудобно и не оптимально.

И выход такой, что хоть сами данные заголовка хранятся в виде string-ов, мы их всех копируем в результирующую строку, размер которой заранее резервируем. Это становится первым буфером в рамках заданного response.

В ситуациях, когда ответ (и его заголовок) создаются на одной нити, а RESTinio c ASIO крутится на другой, то от одной нити к другой в счет заголовка подйет всего один инстанс std::string (память под который выделялась на другой нити, ибо редко какой заголовок влезает в SSO) и для менеджеров памяти для которых освобождать память лучше на той же нити на которой она выделялась, это такая хорошая добавка.

А вообще, да, мувать мы любим и надеюсь умеем ;)

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность