Mercurial > hg > orthanc
comparison Core/JobsEngine/JobsEngine.cpp @ 2570:2e879c796ec7 jobs
JobsRegistry::SubmitAndWait(), StoreScuJob
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 07 May 2018 21:42:04 +0200 |
parents | 2af17cd5eb1f |
children | 3372c5255333 |
comparison
equal
deleted
inserted
replaced
2569:2af17cd5eb1f | 2570:2e879c796ec7 |
---|---|
100 case JobStepCode_Failure: | 100 case JobStepCode_Failure: |
101 running.MarkFailure(); | 101 running.MarkFailure(); |
102 return false; | 102 return false; |
103 | 103 |
104 case JobStepCode_Retry: | 104 case JobStepCode_Retry: |
105 running.GetJob().ReleaseResources(); | |
105 running.MarkRetry(dynamic_cast<JobStepRetry&>(*result).GetTimeout()); | 106 running.MarkRetry(dynamic_cast<JobStepRetry&>(*result).GetTimeout()); |
106 return false; | 107 return false; |
107 | 108 |
108 case JobStepCode_Continue: | 109 case JobStepCode_Continue: |
109 return true; | 110 return true; |
188 } | 189 } |
189 | 190 |
190 | 191 |
191 void JobsEngine::SetWorkersCount(size_t count) | 192 void JobsEngine::SetWorkersCount(size_t count) |
192 { | 193 { |
193 if (count == 0) | |
194 { | |
195 throw OrthancException(ErrorCode_ParameterOutOfRange); | |
196 } | |
197 | |
198 boost::mutex::scoped_lock lock(stateMutex_); | 194 boost::mutex::scoped_lock lock(stateMutex_); |
199 | 195 |
200 if (state_ != State_Setup) | 196 if (state_ != State_Setup) |
201 { | 197 { |
202 // Can only be invoked before calling "Start()" | 198 // Can only be invoked before calling "Start()" |
216 throw OrthancException(ErrorCode_BadSequenceOfCalls); | 212 throw OrthancException(ErrorCode_BadSequenceOfCalls); |
217 } | 213 } |
218 | 214 |
219 retryHandler_ = boost::thread(RetryHandler, this); | 215 retryHandler_ = boost::thread(RetryHandler, this); |
220 | 216 |
217 if (workers_.size() == 0) | |
218 { | |
219 // Use all the available CPUs | |
220 size_t n = boost::thread::hardware_concurrency(); | |
221 | |
222 if (n == 0) | |
223 { | |
224 n = 1; | |
225 } | |
226 | |
227 workers_.resize(n); | |
228 } | |
229 | |
221 for (size_t i = 0; i < workers_.size(); i++) | 230 for (size_t i = 0; i < workers_.size(); i++) |
222 { | 231 { |
223 workers_[i] = boost::thread(Worker, this, i); | 232 workers_[i] = boost::thread(Worker, this, i); |
224 } | 233 } |
225 | 234 |
226 state_ = State_Running; | 235 state_ = State_Running; |
227 | 236 |
228 LOG(WARNING) << "The jobs engine has started"; | 237 LOG(WARNING) << "The jobs engine has started with " << workers_.size() << " threads"; |
229 } | 238 } |
230 | 239 |
231 | 240 |
232 void JobsEngine::Stop() | 241 void JobsEngine::Stop() |
233 { | 242 { |