コード例 #1
0
ファイル: JobPool.cpp プロジェクト: rickcowan/xLights
void* JobPoolWorker::Entry()
{
#ifdef LINUX
    XInitThreads();
#endif
    while ( true ) {
        // Did we get a request to terminate?
        if (TestDestroy())
            break;

        Job *job = GetJob();
        if (job) {
            // Call user's implementation for processing request
            ProcessJob(job);
            delete job;
            job = NULL;
        } else {
            wxMutexLocker mutLock(*lock);
            if (idleThreads > 5) {
                break;
            }
        }
    }
    wxMutexLocker mutLock(*lock);
    numThreads--;
    return NULL;
}
コード例 #2
0
ファイル: JobPool.cpp プロジェクト: Jchuchla/xLights
void* JobPoolWorker::Entry()
{
#ifdef LINUX
    XInitThreads();
#endif
    while ( !stopped ) {
        // Did we get a request to terminate?
        if (TestDestroy())
            break;

        Job *job = GetJob();
        if (job) {
            // Call user's implementation for processing request
            ProcessJob(job);
            if (job->DeleteWhenComplete()) {
                delete job;
            }
            job = NULL;
        } else {
            std::unique_lock<std::mutex> mutLock(*lock);
            if (idleThreads > 5) {
                break;
            }
        }
    }
    std::unique_lock<std::mutex> mutLock(*lock);
    numThreads--;
    return NULL;
}
コード例 #3
0
ファイル: JobManager.cpp プロジェクト: asocha/Engine
///=====================================================
/// 
///=====================================================
void JobManager::Update(){
	if (m_threads.empty()){
		ProcessJob(ThreadType::AnyType);
	}

	Job* completedJob;
	while (m_finishedJobs.Dequeue(&completedJob)){
		FATAL_ASSERT(completedJob->m_callback != nullptr);
		completedJob->m_callback(completedJob->m_callbackArgs);

		delete completedJob;
	}
}
コード例 #4
0
ファイル: AsyncFuncs.cpp プロジェクト: Mateuus/newundead
int CAsyncApiWorker::WorkerThread()
{
	while(true)
	{
		::WaitForSingleObject(hStartEvt_, INFINITE);

		while(CAsyncApiJob* job = GetNextJob())
		{
			ProcessJob(job);
		}

		r3dCSHolder cs1(csJobs_);
		if(jobs_.size() == 0 && needToExit_)
		{
			r3dOutToLog("CAsyncApiWorker %d finished\n", idx_);
			return 0;
		}
	}
}
コード例 #5
0
uint32 FSimplygonRESTClient::Run()
{
	
	while (SwarmTask->GetState() != SRS_ASSETDOWNLOADED)
	{
		switch (SwarmTask->GetState())
		{
		case SRS_UNKNOWN:
			UploadAsset(TEXT("UE4_TEST"), SwarmTask->ZipFilePath);
			break;
		case SRS_FAILED:
			return 0;
			break;
		case SRS_ASSETUPLOADED:
			CreateJob(TEXT("UE4_TEST"), SwarmTask->InputAssetId);
			break;
		case SRS_JOBCREATED:
			UploadJobSettings(SwarmTask->JobId, SwarmTask->SplFilePath);
			break;
		case SRS_JOBSETTINGSUPLOADED:
			ProcessJob(SwarmTask->JobId);
			break;
		case SRS_JOBPROCESSING:
			GetJob(SwarmTask->JobId);
			break;
		case SRS_JOBPROCESSED:
			DownloadAsset(SwarmTask->OutputAssetId);
			break;
		case SRS_ASSETDOWNLOADED:
			break;
		}		

		if (SwarmTask->GetState() == SRS_FAILED)
		{
			break;
		}
		
		FPlatformProcess::Sleep(0.5);
	}

	return 0;
}