LINUX.ORG.RU

Гарантированно асинхронная запись в Linux?

 , , ,


2

3

Вопрос прост как 3 копейки:

Есть ли в Linux системный вызов «запиши в файловый дескриптор вот эти 4096 байт, но не блокируй меня на всё время записи, а отправь 4096 байт в буфер на стороне ядра и вот тебе коллбек, который нужно будет вызвать у меня, когда реальная запись будет завершена».

Таким образом реализуется, либо цепочка записей, когда внутри коллбека будет использован тот же системный вызов и в качестве возврата - опять же этот коллбек, либо - просто запись в хаотичном порядке, когда пишущей стороне вообще глубоко до лампочки, записались данные или нет (хотя если коллбек обнаружит сбой записи - может быть и вызвано исключение, why not).

К чему вопрос? К тому, что легко и просто находится select, позволяющий начать запись только тогда, когда не нужно будет ждать завершения чьей-то предыдущей записи - и это прекрасно. Но хотелось бы и саму запись в асинхронном режиме: я просто отправляю в буферы ядра данные для записи, и после этого мне «хоть трава не расти» - я могу свободно заниматься дальнейшей полезной работой.

Наверняка же есть такое?

★★★★★

Последнее исправление: DRVTiny (всего исправлений: 2)
Ответ на: комментарий от anonymous

в каком плане не очень? медленный?

Требует O_DIRECT и выравнивания по границе блока

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.