"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 ;-)

--sigbjorn

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to