示例#1
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();
}
示例#2
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();
}