| 223 | } |
| 224 | |
| 225 | void NPar::TLocalExecutor::TImpl::LaunchRange(TIntrusivePtr<TLocalRangeExecutor> execRange, |
| 226 | int queueSizeLimit, |
| 227 | std::atomic<int>* queueSize, |
| 228 | TLockFreeQueue<TSingleJob>* jobQueue) { |
| 229 | int count = Min<int>(ThreadCount + 1, execRange->GetRangeSize()); |
| 230 | if (queueSizeLimit >= 0 && queueSize->load() >= queueSizeLimit) { |
| 231 | return; |
| 232 | } |
| 233 | queueSize->fetch_add(count); |
| 234 | jobQueue->EnqueueAll(TVector<TSingleJob>{size_t(count), TSingleJob(std::move(execRange), 0)}); |
| 235 | HasJob.Signal(); |
| 236 | } |
| 237 | |
| 238 | NPar::TLocalExecutor::TLocalExecutor() |
| 239 | : Impl_{MakeHolder<TImpl>()} { |
no test coverage detected