2000-10-27 15:21:08

by Jamie Lokier

[permalink] [raw]
Subject: Re: kqueue microbenchmark results

Alfred Perlstein wrote:
> > If a programmer does not ever wish to block under any circumstances, it's
> > his obligation to communicate this desire to the implementation. Otherwise,
> > the implementation can block if it doesn't have data or an error available
> > at the instant 'read' is called, regardless of what it may have known or
> > done in the past.
>
> Yes, and as you mentioned, it was _bugs_ in the operating system
> that did this.

Not for writes. POLLOUT may be returned when the kernel thinks you have
enough memory to do a write, but someone else may allocate memory before
you call write(). Or does POLLOUT not work this way?

For read, you still want to declare the sockets non-blocking so your
code is robust on _other_ operating systems. It's pretty straightforward.

-- Jamie