On Mon, Oct 26, 2009 at 09:32:00PM -0700, Evan Klitzke wrote: > Hi all, > > Is there any reason to set a socket as non-blocking using > fcntl/O_NONBLOCK before adding it to the libevent event loop?
I believe you may have the causality backwards here: most applications that do this aren't using O_NONBLOCK because they want to use select() [or poll(), or Libevent]. Instead, they are using O_NONBLOCK so that they can handle many IO on sockets from a single thread without blocking on IO operations, and they are using select() [or poll(), or Libevent] so they can efficiently tell which sockets are ready to read or write more. In addition to the link that Springande Ulv posted, you should definitely check out the (unfinished, but not too bad) Chapter 1 of http://www.wangafu.net/~nickm/libevent-book/ This chapter tries to walk you through a series of examples about why you might want to use nonblocking IO, and why (having chosen to use nonblocking IO) you would need to use select() or poll() or epoll() or kqueue() or Libevent. [For the record, nothing in the Libevent event loop cares whether the sockets you add are nonblocking or not.] Hope this helps, -- Nick *********************************************************************** To unsubscribe, send an e-mail to [email protected] with unsubscribe libevent-users in the body.
