ZMQMachine is another Ruby implementation of the reactor pattern but this
time using 0mq sockets rather than POSIX sockets.
Unlike the great Eventmachine ruby project and the Python Twisted
project which work with POSIX sockets, ZMQMachine is inherently threaded. The
0mq sockets backing the reactor use a thread pool for performing
their work so already it is different from most other reactors. Also, a
single program may create multiple reactor instances which runs in
its own thread. All activity within the reactor is single-threaded
and asynchronous.
It is possible to extend the 0mq library to "poll" normal file
descriptors. This isn't on my roadmap but patches are accepted.