本文整理汇总了C++中TaskManager::getWork方法的典型用法代码示例。如果您正苦于以下问题:C++ TaskManager::getWork方法的具体用法?C++ TaskManager::getWork怎么用?C++ TaskManager::getWork使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TaskManager
的用法示例。
在下文中一共展示了TaskManager::getWork方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: workerLoop
/// Worker Worker routine.
/// This is the routine every worker thread runs.
/// The worker thread continuously asks for Tasks and executes them.
///
/// Note that worker threads are NOT guarenteed to ever call Worker.exit()
/// before the program ends.
void workerLoop ( Worker * me, void* args ) {
task_worker_args* wargs = (task_worker_args*) args;
TaskManager* tasks = wargs->tasks;
TaskingScheduler * sched = wargs->scheduler;
sched->onWorkerStart();
StateTimer::setThreadState( StateTimer::FINDWORK );
StateTimer::enterState_findwork();
Task nextTask;
while ( true ) {
// block until receive work or termination reached
if (!tasks->getWork(&nextTask)) break; // quitting time
sched->num_active_tasks++;
StateTimer::setThreadState( StateTimer::USER );
StateTimer::enterState_user();
{
GRAPPA_PROFILE( exectimer, "user_execution", "", GRAPPA_USER_GROUP );
nextTask.execute();
}
StateTimer::setThreadState( StateTimer::FINDWORK );
sched->num_active_tasks--;
sched->thread_yield( ); // yield to the scheduler
}
}