diff options
author | Martin Sustrik <sustrik@250bpm.com> | 2010-09-19 21:40:26 +0200 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2010-09-19 21:40:26 +0200 |
commit | 938689a49128ca17d2bc9662f311c6dbb70240db (patch) | |
tree | d709fdb4b0fb2c7b8fcb22f58e53c7f7d9eb16af | |
parent | 471013a59fc7f41b694c0bc0b11a459d4c19700d (diff) |
synchronisation problem fixed in ctx_t
-rw-r--r-- | src/ctx.cpp | 2 | ||||
-rw-r--r-- | src/zmq_init.cpp | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/ctx.cpp b/src/ctx.cpp index 267f7d0..b17fac0 100644 --- a/src/ctx.cpp +++ b/src/ctx.cpp @@ -108,8 +108,10 @@ int zmq::ctx_t::terminate () { // First send stop command to sockets so that any // blocking calls are interrupted. + slot_sync.lock (); for (sockets_t::size_type i = 0; i != sockets.size (); i++) sockets [i]->stop (); + slot_sync.unlock (); // Close the logging infrastructure. log_sync.lock (); diff --git a/src/zmq_init.cpp b/src/zmq_init.cpp index 3c8f288..ee5741a 100644 --- a/src/zmq_init.cpp +++ b/src/zmq_init.cpp @@ -139,7 +139,10 @@ void zmq::zmq_init_t::finalise_initialisation () if (sent && received) { // If we know what session we belong to, it's easy, just send the - // engine to that session and destroy the init object. + // engine to that session and destroy the init object. Note that we + // know about the session only if this object is owned by it. Thus, + // lifetime of this object in contained in the lifetime of the session + // so the pointer cannot become invalid without notice. if (session) { engine->unplug (); send_attach (session, engine, peer_identity, true); |