At the top, the part:
[code]bool ThreadPool::runNextJob()
{
lock.enter();
ThreadPoolJob* job = 0;
for (int i = 0; i < jobs.size(); ++i)
{
job = (ThreadPoolJob*) jobs [i];
if (job != 0 && ! (job->isActive || job->shouldStop))
break;
}
if (job != 0)
{
...
[/code]
should read:
[code]bool ThreadPool::runNextJob()
{
lock.enter();
ThreadPoolJob* job = 0;
for (int i = 0; i < jobs.size(); ++i)
{
ThreadPoolJob* jobToRun = (ThreadPoolJob*) jobs [i];
if (jobToRun != 0 && ! (jobToRun->isActive || jobToRun->shouldStop))
{
job = jobToRun;
break;
}
}
if (job != 0)
{
...
[/code]
otherwise a single job will be run in as many threads the pool can muster…