void JobPool::PushJob(Job *job) { wxMutexLocker locker(lock); if (idleThreads == 0 && numThreads < maxNumThreads) { numThreads++; JobPoolWorker *worker = new JobPoolWorker(&lock, &signal, &queue, idleThreads, numThreads); worker->Start(threadPriority); threads.push_back(worker); } queue.push_back(job); signal.Broadcast(); }
void JobPool::PushJob(Job *job) { std::unique_lock<std::mutex> locker(lock); if (idleThreads == 0 && numThreads < maxNumThreads) { numThreads++; JobPoolWorker *worker = new JobPoolWorker(&lock, &signal, &queue, idleThreads, numThreads); worker->Start(); threads.push_back(worker); } queue.push_back(job); signal.notify_all(); }