Поддержка Go для операций Scatter-Gather IO

Я хочу разработать высокопроизводительный протокол связи клиент-сервер через доменные сокеты Unix в Go. В частности, я думал об использовании операций Vector-IO (системные вызовы writev/readv), чтобы избежать накладных расходов на сериализацию структурированных данных. Однако я думаю, что Go не полностью поддерживает использование операций ввода-вывода с разбросом-сборкой. Я нашел несколько попыток обеспечить поддержку Go для операций записи, но не для чтения. Есть ли способ реализовать это в Go и/или какая альтернатива будет с точки зрения производительности?

🤔 А знаете ли вы, что...
В Go существует обширное сообщество разработчиков и ресурсы для обучения.


1
596
1

Ответ:

Решено

Используйте net.Buffers для оптимизированной пакетной записи с использованием writev или аналогичного.

Для чтения поместите данные в один буфер и кусочек буфер по мере необходимости.