diff options
Diffstat (limited to 'src')
| -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; |
