本文整理汇总了C++中Worker::SetWorkTask方法的典型用法代码示例。如果您正苦于以下问题:C++ Worker::SetWorkTask方法的具体用法?C++ Worker::SetWorkTask怎么用?C++ Worker::SetWorkTask使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Worker
的用法示例。
在下文中一共展示了Worker::SetWorkTask方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Dispatch
int WorkManagerImpl::Dispatch()
{
while(m_state > 0)
{
WaitForWork();
//std::cout << "Start to dispatch ... " << std::endl;
Worker* worker = NULL;
if(m_state > 0)
{
boost::unique_lock<boost::mutex> locktasks(m_taskmutex);
WorkPtr work;
BufferPtr task;
if(m_works.size() > 0) work = m_works.front();
if(m_tasks.size() > 0) task = m_tasks.front();
if(work)
{
if(task)
{
boost::unique_lock<boost::mutex> lockworkers(m_workermutex);
if(m_freelist.size() > 0)
{
worker = m_freelist.front();
m_freelist.pop_front();
}
else
{
int workercount = m_workers.size();
if(workercount < m_maxworkercount || m_maxworkercount <= 0)
{
Worker* newworker = new Worker(this, m_stacksize);
m_workers.push_back(newworker);
worker = newworker;
}
}
}
if(worker)
{
worker->SetWorkTask(work, task);
m_works.pop_front();
m_tasks.pop_front();
}
}
}
if(worker) worker->GoToWork();
//m_dispatcher.wait();
//usleep(50 * 1000);
}
return m_state;
}