In
https://github.com/imatix/zguide/blob/master/examples/C%2B%2B/syncpub.cpp
example
it's very possible that client never receive "END" message (and so will
hang).
This is because zeromq buffer is only 1000 items but we send much more
and it's pretty possible that "END" message will be lost.
To avoid this it's enough to insert one extra "sleep" call before
sending "END". I.e. change this:
// Now broadcast exactly 1M updates followed by END
int update_nbr;
for (update_nbr = 0; update_nbr < 1000000; update_nbr++) {
s_send (publisher, "Rhubarb");
}
s_send (publisher, "END");
sleep (1); // Give 0MQ time to flush output
to this:
// Now broadcast exactly 1M updates followed by END
int update_nbr;
for (update_nbr = 0; update_nbr < 1000000; update_nbr++) {
s_send (publisher, "Rhubarb");
}
sleep (1); // Give 0MQ time to flush output
s_send (publisher, "END");
sleep (1); // Give 0MQ time to flush output
I don't know how can I contribute this change, also I can not test
exactly this code because i'm using Windows and in my code I changed
"sleep(1)" to "Sleep(1000)".
Probably someone can commit this change if I'm correct.
Thanks,
Oleg
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev