示例#1
0
//-----------------------------------------------------------------------------------------------
STATIC void JobManager::Update()
{
	if( s_workerThreads.size() == 0 )
	{
		Job* job = GetJobOfAnyTypeFromTodoList();
		if( job )
		{
			job->Execute();
			ReportCompletedJob( job );
		}
	}

	EnterCriticalSection( &s_cs );
	while( s_jobsCompleted.size() > 0 )
	{
		Job* completedJob = s_jobsCompleted.front();
		completedJob->FireCallbackEvent();
		delete completedJob;
		completedJob = nullptr;
		s_jobsCompleted.erase( s_jobsCompleted.begin() );
	}
	LeaveCriticalSection( &s_cs );
}