Hi, William Thanks for your quotation. It's really helpful and provide official proof of Andrew's opinion. I'll check it out further.
Thanks for reply. Harvey 2011/8/4 William Ahern <will...@25thandclement.com> > On Wed, Aug 03, 2011 at 03:39:34PM +0800, zhihua che wrote: > > Hi, everyone, > > > > I'm reading libevent-2.0 code and have made certain progress:). > However, > > I'm still confused with some basic concepts like "ready" for reading or > > writing. In the context of sockets, I think I can imagine this "ready" > > situation: the socket is ready for reading when the receiving buffer > > receives some data from the lower level of the network stack, and is > ready > > for writing when the sending buffer has enough free space to accept data > > from the higher level. > > My point here is how it works in terms of regular file, like local > disk > > regular file. Imagine I was monitoring a local regular file descriptor. I > > can't figure out what actions or conditions can cause the descriptor > > readable or writable. > > > > POSIX mandates that regular files always return ready for reading or > writing. IEEE Std 1003.1-2008 says, regarding the poll() interface, that > > Regular files shall always poll TRUE for reading and writing. > > For select(), > > File descriptors associated with regular files shall always select > true for ready to read, ready to write, and error conditions. > > The reasons for this are based on historical and modern implementations > (neither the BSDs nor Linux have an asynchronous block layer), but > regardless it's a part of the abstract interface and won't change anytime > soon even if the implementations change in a way that supports non-blocking > reads. AIO in Linux, for example, AFAIK, is still done using threads, > either > preemptible userland threads or kernel work queue threads. > > *********************************************************************** > To unsubscribe, send an e-mail to majord...@freehaven.net with > unsubscribe libevent-users in the body. >