0
0
mirror of https://github.com/zeromq/libzmq.git synced 2024-12-31 01:43:02 +08:00

Merge pull request #738 from ricnewton/master

Fix race condition on shutdown
This commit is contained in:
Pieter Hintjens 2013-11-06 07:41:02 -08:00
commit 6ed1f4766a

View File

@ -107,7 +107,6 @@ int zmq::ctx_t::terminate ()
// restarted.
bool restarted = terminating;
terminating = true;
slot_sync.unlock ();
// First attempt to terminate the context.
if (!restarted) {
@ -115,13 +114,12 @@ int zmq::ctx_t::terminate ()
// First send stop command to sockets so that any blocking calls
// can be interrupted. If there are no sockets we can ask reaper
// thread to stop.
slot_sync.lock ();
for (sockets_t::size_type i = 0; i != sockets.size (); i++)
sockets [i]->stop ();
if (sockets.empty ())
reaper->stop ();
slot_sync.unlock ();
}
slot_sync.unlock();
// Wait till reaper thread closes all the sockets.
command_t cmd;