Dan Kegel wrote:
> If you have a top-notch completion notification event interface
> provided natively by the OS, though, does that get rid of the
> need for the "async poll" mechanism?
A top-notch completion notification event interface needs to be able to
provide "async poll" functionality. There are some situations where an
application needs a completion notification event when an fd is readable
or writeable, but cannot supply buffers or data until after the event
arrives.
One of these situations is when the application is using a nonblocking
interface to an existing library. When the library returns a
"wouldblock" condition, the application determines through the interface
(or the interface definition) which poll events need to occur before a
subsequent call to the library is likely to result in progress. The
application then needs to schedule a completion event for when those
poll events occur. The application does not know enough about the
library implementation to schedule async I/O and the library is not
written to use async I/O itself.
Another situation occurs when handling a large number of mostly idle
connections. Consider a protocol for which a server receives one
command per half hour per connection. A server process would want to
handle hundreds of thousands to millions of such connections. If the
server were to use asynchronous read operations, then it would have to
allocate one input buffer per connection. Better to instead use
asynchronous read poll operations, allocating buffers to connections
only when those connections have pending input.
This latter situation would be further improved by a variant of the
asynchronous read operation where the buffer is supplied by either the
event queue object or the caller to get_event(), but that's a separate
issue.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Tue Oct 31 2000 - 21:00:27 EST