URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 87663
[ Назад ]

Исходное сообщение
"Aio_write или O_NONBLOCK для сокета в FreeBSD?"

Отправлено ptr , 20-Дек-09 01:30 
Хочется обслужвать несколько TCP (SOCK_STREAM) соединений в одном процессе/нити под FreeBSD. Со чтением все понятно - если O_NONBLOCK, то всегда буду читать из буфера и ничего во время read() ждать не буду. А вот с записью не понял. В случае O_NONBLOCK, write мне вернет управление сразу или же возможен вариант, что я буду ждать, пока от удаленного хоста ACK не прибежит?

Насколько я знаю, для Linux aio_write для socket асинхронно работать не будет. А как для BSD?


Содержание

Сообщения в этом обсуждении
"Aio_write или O_NONBLOCK для сокета в FreeBSD?"
Отправлено аноним , 20-Дек-09 07:50 
П-ц. Это asynchronous i/o не будет работать асинхронно? Подумайте хоть чуть-чуть, прежде чем такое спросить.

"Aio_write или O_NONBLOCK для сокета в FreeBSD?"
Отправлено ptr , 20-Дек-09 12:14 
>П-ц. Это asynchronous i/o не будет работать асинхронно? Подумайте хоть чуть-чуть, прежде
>чем такое спросить.

Я же не от балды написал:
http://lse.sourceforge.net/io/aio.html

Цитирую:
AIO read and write on sockets (doesn't return an explicit error, but quietly defaults to synchronous or rather non-AIO behavior)



"Aio_write или O_NONBLOCK для сокета в FreeBSD?"
Отправлено аноним , 20-Дек-09 21:41 
>Цитирую:
>AIO read and write on sockets (doesn't return an explicit error, but
>quietly defaults to synchronous or rather non-AIO behavior)

Мда, Linux is so broken... Во FreeBSD ничего подобного, разумеется, нет.


"Aio_write или O_NONBLOCK для сокета в FreeBSD?"
Отправлено parad , 21-Дек-09 08:28 
ни в линуксе ни во фре на неблокируемых сокетах ждать АКА не надо - это и есть отличие блокируемых от неблакируемых.

"Aio_write или O_NONBLOCK для сокета в FreeBSD?"
Отправлено ptr , 21-Дек-09 08:43 
>ни в линуксе ни во фре на неблокируемых сокетах ждать АКА не
>надо - это и есть отличие блокируемых от неблакируемых.

Спасибо! Это ответ по сути. Следовательно, для сокетов смысла в aio_* функциях просто нет.