Имеет ли смысл вызывать async_connect на сокете unix? - PullRequest
0 голосов
/ 21 февраля 2019

Я использую asio для создания сетевой библиотеки, которая может подключаться к удаленным системам через сокеты TCP или unix.Я использую asio::generic::stream_protocol::socket, который имеет методы connect и async_connect.Имеет ли смысл использовать async_connect при подключении в качестве клиента к сокету Unix?

1 Ответ

0 голосов
/ 21 февраля 2019

Определите «имеет смысл».Оба способа работают, но по-разному влияют на стиль, архитектуру и производительность.

Ввод / вывод данных, особенно по сети, имеет большие задержки, т.е. задержки, и приводит к нечеткому асинхронному стилю программирования, Boost Asio даже получил свое имя от.

Таким образом, использование блокировки connect было бы очень плохим выбором в случае TCP, так как целый поток ожидает несколько мс, пока что-то не происходит, и не может больше ничего делать, в то время как это было бы нормально вслучай IPC, то есть сокеты unix.

Но так как вы хотите оба варианта, я рекомендую просто использовать async_connect, так как вам все равно придется организовать всю программу в стиле "асинхронного" для случая TCP, иу него нет недостатков для случая сокета unix (может быть также быстрее или иметь более высокую пропускную способность, чем блокирующий).А чтобы не делать ненужных веток частными случаями, многие считают в т.ч.я как смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...