diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-09-01 21:00:47 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-09-01 21:00:47 +0100 |
| commit | 1934870acbab5efe51afecff46081a5850876eee (patch) | |
| tree | 06de9a644914493d454b5842cebc672c0a71d940 /src/lib | |
| parent | 0df83d7ba261cdbb5be62db34dae7b972e05ddd9 (diff) | |
Don't start thread in constructor. (JobManager)
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/job_manager.cc | 13 | ||||
| -rw-r--r-- | src/lib/job_manager.h | 1 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/lib/job_manager.cc b/src/lib/job_manager.cc index f31a00a18..e3f91f4fc 100644 --- a/src/lib/job_manager.cc +++ b/src/lib/job_manager.cc @@ -38,11 +38,17 @@ JobManager* JobManager::_instance = 0; JobManager::JobManager () : _terminate (false) , _last_active_jobs (false) - , _scheduler (new boost::thread (boost::bind (&JobManager::scheduler, this))) + , _scheduler (0) { } +void +JobManager::start () +{ + _scheduler = new boost::thread (boost::bind (&JobManager::scheduler, this)); +} + JobManager::~JobManager () { { @@ -50,9 +56,11 @@ JobManager::~JobManager () _terminate = true; } - if (_scheduler->joinable ()) { + if (_scheduler) { _scheduler->join (); } + + delete _scheduler; } shared_ptr<Job> @@ -147,6 +155,7 @@ JobManager::instance () { if (_instance == 0) { _instance = new JobManager (); + _instance->start (); } return _instance; diff --git a/src/lib/job_manager.h b/src/lib/job_manager.h index d0e83e26f..3cd8be6d6 100644 --- a/src/lib/job_manager.h +++ b/src/lib/job_manager.h @@ -55,6 +55,7 @@ private: JobManager (); ~JobManager (); void scheduler (); + void start (); mutable boost::mutex _mutex; std::list<boost::shared_ptr<Job> > _jobs; |
