[zeromq-dev] Using ZMQ_FD with select

Yi Ding yi.s.ding at gmail.com
Sun Feb 19 00:31:05 CET 2012


On Sat, Feb 18, 2012 at 8:59 AM, Schmurfy <schmurfy at gmail.com> wrote:
> I have a strange problem related to using the file descriptor with an event
> loop which led me to do some testing with it  in C but there is still
> something I cannot figure out.
>
> I created a simple client and server, the client (req.c) sends a request and
> wait for an answer while the server just sends back what was received, my
> problem is that the client (req.c) always timeout while doing a select on
> the file descriptor and I cannot figure out what is wrong in my code.
>
> Another thing that bother me is that the file descriptor is edge-triggered
> as specified in the documentation but what happens if I "miss" the change ?
> I am not sure if this is possible but let's say I was doing something else
> when the data was receiving, if I do a select after will it block forever ?
>
> Here is my code (I used czmq to make the code easier to write and read, I
> used zeromq 3.1 for this test): https://gist.github.com/1859646
>
> Thanks for any answer I hate when I don't understand something ^^
>

I've run into this exact issue Julien.  The advice I've gotten is to
always call recv after send prior to calling select.  I find it
counterintuitive, but that's the way the devs have said it should be
done.

I don't think it's possible to miss a change, as long as you've called
recv the exact right number of times. (don't call recv again after
successfully recv'ing a message, unless you're looking to get a EFSM,
no matter what people on the list might say)  The edge triggering will
remain valid as long as you don't select on it.



More information about the zeromq-dev mailing list