本文整理汇总了C++中Coroutine::setStatus方法的典型用法代码示例。如果您正苦于以下问题:C++ Coroutine::setStatus方法的具体用法?C++ Coroutine::setStatus怎么用?C++ Coroutine::setStatus使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Coroutine
的用法示例。
在下文中一共展示了Coroutine::setStatus方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: doWork
bool CoroutineManager::doWork(VarisEvent* event){
Coroutine* cor;
if((cor = event->getCoroutine())!=NULL &&( event->getListenEventType()&T_COROUTINE)){
cor->setStatus(BUSY);
runCorEvent(event);
return true;
}
//no coroutine free
if(freeCoroutine_.empty()){
return false;
}
if(!(event->getListenEventType()&T_COROUTINE)){
int tmpCoroutine = freeCoroutine_.top();
freeCoroutine_.pop();
ucontext_t* context = coroutines_[tmpCoroutine].getContext();
context->uc_link = coroutines_[0].getContext();
Coroutine* coroutine = &(coroutines_[tmpCoroutine]);
coroutine->setStatus(READY);
event->setCoroutine(coroutine);
makecontext(context,(corfunc)(VarisEvent::handle),1,event);
runCoroutine(tmpCoroutine);
return true;
}
return false;
}
示例2: onCoroutineFinished
//notice
void CoroutineManager::onCoroutineFinished(CoroutineManager* th){
while(true){
Coroutine cor = th->coroutines_[th->curCoroutine_];
cor.setStatus(FREE);
th->freeCoroutine_.push(th->curCoroutine_);
th->curCoroutine_ = 0;
th->runCoroutine(1);
}
}