On Sat, Feb 18, 2012 at 5:31 PM, Yi Ding <[email protected]> wrote: > On Sat, Feb 18, 2012 at 8:59 AM, Schmurfy <[email protected]> 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.
Btw, this exact issue gave me so much trouble that I ended up just switching from REP-REQ to PUSH-PULL. _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
