summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-09-24 16:03:21 +0100
committerCarl Hetherington <cth@carlh.net>2015-09-24 16:03:21 +0100
commite975b14d2c962eab149f56a79c35b68b608226d4 (patch)
tree0959a5d0f4680538c1f080659e82b5bf073bba6c /src
parentb7ef3e79b9eb4f245556e69c68ee624c5b43e126 (diff)
assert (joinable) before joining threads.
Diffstat (limited to 'src')
-rw-r--r--src/lib/job_manager.cc1
-rw-r--r--src/lib/server.cc8
-rw-r--r--src/lib/server_finder.cc2
-rw-r--r--src/lib/update_checker.cc1
-rw-r--r--src/lib/writer.cc1
5 files changed, 10 insertions, 3 deletions
diff --git a/src/lib/job_manager.cc b/src/lib/job_manager.cc
index 545fd956c..86e010c10 100644
--- a/src/lib/job_manager.cc
+++ b/src/lib/job_manager.cc
@@ -62,6 +62,7 @@ JobManager::~JobManager ()
}
if (_scheduler) {
+ DCPOMATIC_ASSERT (_scheduler->joinable ());
_scheduler->join ();
}
diff --git a/src/lib/server.cc b/src/lib/server.cc
index 260f2e469..dd076a049 100644
--- a/src/lib/server.cc
+++ b/src/lib/server.cc
@@ -81,15 +81,17 @@ Server::~Server ()
_full_condition.notify_all ();
}
- for (vector<boost::thread*>::iterator i = _worker_threads.begin(); i != _worker_threads.end(); ++i) {
- (*i)->join ();
- delete *i;
+ BOOST_FOREACH (boost::thread* i, _worker_threads) {
+ DCPOMATIC_ASSERT (i->joinable ());
+ i->join ();
+ delete i;
}
_io_service.stop ();
_broadcast.io_service.stop ();
if (_broadcast.thread) {
+ DCPOMATIC_ASSERT (_broadcast.thread->join ());
_broadcast.thread->join ();
}
}
diff --git a/src/lib/server_finder.cc b/src/lib/server_finder.cc
index 4b532f981..642767e8b 100644
--- a/src/lib/server_finder.cc
+++ b/src/lib/server_finder.cc
@@ -63,11 +63,13 @@ ServerFinder::~ServerFinder ()
_search_condition.notify_all ();
if (_search_thread) {
+ DCPOMATIC_ASSERT (_search_thread->joinable ());
_search_thread->join ();
}
_listen_io_service.stop ();
if (_listen_thread) {
+ DCPOMATIC_ASSERT (_listen_thread->joinable ());
_listen_thread->join ();
}
}
diff --git a/src/lib/update_checker.cc b/src/lib/update_checker.cc
index 4ee728fde..4c5075e20 100644
--- a/src/lib/update_checker.cc
+++ b/src/lib/update_checker.cc
@@ -86,6 +86,7 @@ UpdateChecker::~UpdateChecker ()
_condition.notify_all ();
if (_thread) {
+ DCPOMATIC_ASSERT (_thread->joinable ());
_thread->join ();
}
delete _thread;
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index 1318cc20f..bace6602d 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -477,6 +477,7 @@ Writer::terminate_thread (bool can_throw)
_full_condition.notify_all ();
lock.unlock ();
+ DCPOMATIC_ASSERT (_thread->joinable ());
_thread->join ();
if (can_throw) {
rethrow ();