Brian et al,

Just a followup on my comment earlier:

I look at ØMQ as enabling richer computational topologies / event- driven models.

So if you look at your problem, it's not a "shutdown" problem, but rather another event occurred ("shutdown") which triggers a different branch.

If you generalize the model a bit, you might end up with an interface that wraps poll() + recv(ZMQ_NOBLOCK) into a tidier interface (no flames please :-) ):

int index = zmq_recv_next({your favorite way of building a list of sockets});

switch (index) {
case 1: // normal socket
        ...
        break;
case 2: // shutdown socket
        ...
        break;
default: // ouch
        ...
}

You could add, e.g. a command socket:

case 3: // report status
                ...
                break;

If you wanted to, or simply re-use the broadcast node of case 2 to carry more than one "command".

This should extend gracefully to a full message-passing paradigm if you want (see some of the previous posts et al), but this functionality should suffice for the case you described.

Best,

Matt

On Jul 1, 2010, at 3:15 PM, Matt Weinstein wrote:

One simple way might be to use an inproc: PUB/SUB socket:

        zmq::socket_t kill_me(*ctx, ZMQ_SUB);
kill_me.setsockopt(ZMQ_SUBSCRIBE, "", 0); // [typographic correction applied-MW]

Service threads would then poll() both their normal socket and the "kill" socket. As soon as a message arrived, the thread would cleanup and quit.

On Jun 30, 2010, at 9:05 PM, Brian Granger wrote:



On Wed, Jun 30, 2010 at 5:27 PM, Matt Weinstein <[email protected] > wrote:
Under what circumstances do you want to break blocking?

E.g. timeout, connection failure, etc.?



For us, we want to do this when we want to kill a process that is sitting there blocking in zmq.recv. IOW, we want SIGINT to trigger the process to shutdown in a semi-clean manner (no seg faults!).

Cheers,

Brian

On Jun 30, 2010, at 10:23 AM, Derek Developer wrote:

Is there any way to break the blocking of zmq_recv() without firing up a client and sending a message like "QUIT SERVER"?

_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev


_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev




--
Brian E. Granger, Ph.D.
Assistant Professor of Physics
Cal Poly State University, San Luis Obispo
[email protected]
[email protected]
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev


_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to