Currently, descriptors with changes are sent to the watcher via a pipe. Previously, both ends were set to non-blocking I/O.  Now, only the reader is set non-blocking.  This means the writer will block for a while if the pipe fills, but since the watcher is in a different thread from the reader, the pipe will eventually drain, and the writer can continue.
Currently, descriptors with changes are sent to the watcher via a pipe.
Previously, both ends were set to non-blocking I/O.  Now, only the
reader is set non-blocking.  This means the writer will block for a while
if the pipe fills, but since the watcher is in a different thread from
the reader, the pipe will eventually drain, and the writer can continue.

This is really nothing more than a lock, just not a mutex-type lock.

each/bind9-collab,each/bind9-collab,pecharmin/bind9,each/bind9-collab,pecharmin/bind9,pecharmin/bind9,each/bind9-collab,pecharmin/bind9,pecharmin/bind9,pecharmin/bind9,each/bind9-collab,each/bind9-collab