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.