LINUX.ORG.RU

Есть ли задержки между write и read в unix domain sockets?

 ,


0

1

Т.е. открыл я /run/my-socket, сишу слушаю, акцептю, пишу-читаю, всё non-blocking (select(2)).

  1. Полагаю, внутри ядра такое accepted connection для локального unix domain socket – реализовано как обычный pipe?

  2. Когда одна сторона пишет, мгновенно ли другой стороне прилетают данные (non-blocking просыпается из select(), клиентский blocking read() возвращает управление), или там может буферизация какая или ещё какая дичь?

★★★★

В первом приближении можешь считать что подключённый unix socket это то же самое что pipe, но полноценно двунаправленный.

Отличия есть, но они в основном не влияют на работу, если только ты специально про них не подумаешь. Например на пайп вроде нельзя recv() делать а можно только read(), а на сокет можно и то и то.

Буфер там конечно есть, и в пайпе и в сокете, и разного размера скорее всего (но, вероятно, маленького), но он не для того чтобы прятать данные а что бы не вис send(), ожидая чтение на другом конце. recv() принимает данные сразу.

firkax ★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.