LINUX.ORG.RU

да, open(..., O_NONBLOCK), но смысла в этом, кроме как для devices и fifo, нет

beastie ★★★★★
()
Ответ на: комментарий от sn1ln

> Reset, ты код fs в лялихе давно смотрел? Там все только через aio и делеается.

А в глибце через треды эмулируется. AIO в лялихе - это не POSIX AIO. API другое с более строгими ограничениями, из-за чего нельзя замапить его на посиксное апи. Но это не отменяет того факта, что AIO есть.

const86 ★★★★★
()

1. MMAP - оно рулит. особенно на 64-битных системах (в случае больших файлов)

2. В линуксе есть misfeature - если из файла можно читать и буфер переданный в read() еще не полностью заполнен - то тхреад будет в состоянии D (uninterruptible sleep) пока не прочитает всё. То есть, при определенном ioprio и некоторых обстоятельствах, например, никогда не сбудется. и даже kill -KILL не поможет. Поэтому читай не очень большими блоками.

mmarkk
()
Ответ на: комментарий от const86

>> Reset, ты код fs в лялихе давно смотрел? Там все только через aio и делеается.

А в глибце через треды эмулируется.

Может, и через треды, но не в glibc. А скорее, вообще не эмулируется.

tailgunner ★★★★★
()
Ответ на: комментарий от legolegs

Если ты не в курсе - то нельзя выпнуть если процесс в состоянии D (uninterruptible sleep)

Вот например, найденный мной баг (https://lkml.org/lkml/2010/11/25/8) позволяет задосить едро. убить процесс нельзя.

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