wxString JobPool::GetThreadStatus() { wxString ret = "\n"; for(size_t i=0; i<threads.size(); i++) { JobPoolWorker *worker = threads.at(i); ret += worker->GetStatus(); ret += "\n\n"; } return ret; }
void JobPool::Stop() { for(size_t i=0; i<threads.size(); i++) { JobPoolWorker *worker = threads.at(i); worker->Stop(); delete worker; } threads.clear(); }
std::string JobPool::GetThreadStatus() { std::stringstream ret; ret << "\n"; for(size_t i=0; i<threads.size(); i++){ JobPoolWorker *worker = threads.at(i); ret << worker->GetStatus(); ret << "\n\n"; } return ret.str(); }
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(); }