本文整理汇总了C++中CJob::runThread方法的典型用法代码示例。如果您正苦于以下问题:C++ CJob::runThread方法的具体用法?C++ CJob::runThread怎么用?C++ CJob::runThread使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CJob
的用法示例。
在下文中一共展示了CJob::runThread方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: threadFunc
void CThreadPool::threadFunc() {
CMutexLocker guard(m_mutex);
// m_num_threads was already increased
m_num_idle++;
while (true) {
while (m_jobs.empty()) {
if (!threadNeeded()) break;
m_cond.wait(m_mutex);
}
if (!threadNeeded()) break;
// Figure out a job to do
CJob* job = m_jobs.front();
m_jobs.pop_front();
// Now do the actual job
m_num_idle--;
job->m_eState = CJob::RUNNING;
guard.unlock();
job->runThread();
guard.lock();
jobDone(job);
m_num_idle++;
}
assert(m_num_threads > 0 && m_num_idle > 0);
m_num_threads--;
m_num_idle--;
if (m_num_threads == 0 && m_done) m_exit_cond.notify_one();
}