示例#1
0
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;
}
示例#2
0
void JobPool::Stop()
{
    for(size_t i=0; i<threads.size(); i++) {
        JobPoolWorker *worker = threads.at(i);
        worker->Stop();
        delete worker;
    }
    threads.clear();
}
示例#3
0
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();
}
示例#4
0
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();
}
示例#5
0
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();
}