[zeromq-dev] question about integrating zmq socket fd in external select() loop

Justin Karneges justin at affinix.com
Mon Aug 6 20:41:21 CEST 2012

Stuff I ran into when implementing:

1) Be aware that ZMQ_FD only generates read events. You then check ZMQ_EVENTS 
to see what actually happened.

2) You need to check ZMQ_EVENTS in three situations: after ZMQ_FD read event, 
after calling zmq_send, and after calling zmq_recv. It was only recently 
documented that you need to check in the latter two situations, so this is 
easy to miss. For example, if you have a REP socket that triggers a ZMQ_FD 
read, and then ZMQ_EVENTS reports that it is readable, and then you call 
zmq_recv() to obtain a message from the socket, you might NOT get another read 
event on ZMQ_FD to tell you to check ZMQ_EVENTS to see that the socket is now 
writable. Instead, you should check ZMQ_EVENTS immediately after zmq_recv() to 
learn if the socket has become writable.

On Monday, August 06, 2012 09:18:18 AM diffuser78 wrote:
> Can someone plz share their experiences around this problem ?
> On Fri, Aug 3, 2012 at 3:38 PM, diffuser78 <diffuser78 at gmail.com> wrote:
> > Hi,
> > 
> > I am writing a lib that uses zmq. This lib is going to be used in an app
> > that already has an external select() loop. Can I use fd's retrieved from
> > ZMQ_FD from zmq_getsockopt() in that select loop successfully ?
> > 
> > Are there examples already that tell you how to do it ? Are there any
> > things that I should know ?
> > 
> > I read FAQ section related zmq_poll and also saw man zmq_getsocketopt for
> > ZMQ_FD.
> > 
> > I wanted to know the persoanl experience of some developer around this.
> > 
> > I greatly appreciate your response.
> > 
> > Thanks.
> > 
> > DJ

More information about the zeromq-dev mailing list