|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Oleg Koreshkov 2:5020/400 30 Aug 2004 16:24:22 To : Michael Kolomiets Subject : Re: Проблема с неблокирующим read в проге -------------------------------------------------------------------------------- "Michael Kolomiets" <mike@budmax.com.ua> wrote in message news:cgv4h6$ans$1@hyppo.gu.net... > Привет! > "Oleg Koreshkov" <okoreshkov@salut.ru> wrote in message > news:cgv1ll$1lv5$1@ddt.demos.su... > ... > > Hасколько я знаю, libc_r принудительно устанавливает NONBLOCK > > для всех дескрипторов. > Да, однако:( Это нормально? Есть возможность снять флаг для конкретного > дескриптора? > -- Это нормально (насколько это может быть нормальным) -- libc_r это тридовая библиотека в userland. libc_r переводит все дескрипторы в non-block mode и оборачивает все slow calls (вызовы на которых процесс может заблокироваться) в обертки, и если вызов slow call возвращает EAGAIN, то текущая нить будет "переведена" в "спящий" режим, а управление получит другая нить. Так что если ты не боишься что чтение из COM порта заблокирует ВСЮ твою програму (ВСЕ триды), то можешь попробовать снять NONBLOCK с указанного дескриптора. Правда я не настолько знаю потроха libc_r что бы утверждать будто она не может поставит nonblock mode обратно. --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/6577d22c3b68.html, оценка из 5, голосов 10
|