On 11 August 2005 14:59, Sigbjorn Finne wrote:

> "Simon Marlow" <[EMAIL PROTECTED]> writes:
>> On 11 August 2005 01:18, John Meacham wrote:
>> 
>>> Why do we set file descriptors to nonblocking mode anyway if they
>>> are waited on by a select. there shouldn't be a need to use both
>> 
>> It avoids an extra system call per read(), i.e. a single read()
>> instead of select() + read().  And there's a slight chance of a race
>> between the select() and read() calls, if some other thread or
>> process is reading from the same descriptor.  With non-blocking
>> read(), this isn't an issue. 
>> 
>> The overhead of the extra syscall is probably a non-issue, but the
>> race is mildly worrying. 
>> 
> 
> The main reason for using non-blocking descriptors is that select()
> only tells you that I/O is possible over a descriptor, not the
> amount. Hence block read()s and writes() run the real risk of
> blocking the whole system. Insisting on single byte read()/write()s
> is not an option ;-) 

No - read() can always return less than the requested amount of data,
even when not in O_NONBLOCK mode.

Cheers,
        Simon
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to