[zeromq-dev] zeromq and libuv
Robert G. Jakabosky
bobby at sharedrealm.com
Thu Mar 22 04:49:50 CET 2012
On Monday 19, John D. Mitchell wrote:
> Hmm... Something is very confused in this discussion...
>
> The zeromq.node project and the performance problems there have to do that
> projects's Node.js binding with the zeromq libraries. I.e. it doesn't seem
> to have much, if anything to do with libuv itself.
libuv doesn't provide a way to register a FD for io events. It only allows
starting an async read/write, with notification of when the read/write
finishes. The FD for a zmq socket can't be read from by the application, so
it can't be used with libev. When using zmq sockets in an event loop, one has
to register for notification of read events on the FD and then check for the
true events with the ZMQ_EVENTS socket option.
I think the main reason libuv is designed like that is because that is how
Window's IOCP works.
As far as I can tell zeromq.node only works on *nix systems (where libuv uses
libev as the event loop backend). zeromq.node has to bypass libuv and use a
libev IO watcher directly to work.
The Luvit [1] (LuaJIT + libuv, like nodejs but with Lua instead of Javascript)
has the same problem with trying to use the Lua bindings [2] for zmq.
1. https://github.com/luvit/luvit
2. https://github.com/Neopallium/lua-zmq
--
Robert G. Jakabosky
More information about the zeromq-dev
mailing list