本文整理汇总了C++中WorkItem::Deque方法的典型用法代码示例。如果您正苦于以下问题:C++ WorkItem::Deque方法的具体用法?C++ WorkItem::Deque怎么用?C++ WorkItem::Deque使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorkItem
的用法示例。
在下文中一共展示了WorkItem::Deque方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FlushQueue
// Activates work items sitting in the queue
void CEcmtSdkPlugin::FlushQueue(TBool aFinal)
{
// Lock the queue
Emulator::Escape();
WaitForSingleObject(iMutex, INFINITE);
Emulator::Reenter();
// Move queued callbacks to a temp queue
TDblQue<WorkItem> q;
while (!iQueue.IsEmpty()) {
WorkItem* workItem = iQueue.Last();
workItem->Deque();
q.AddFirst(*workItem);
}
if (aFinal) {
iRunner->Cancel();
} else {
iRunner->iStatus = KRequestPending;
iRunner->SetActive();
}
ReleaseMutex(iMutex);
// Invoke the callbacks
while (!q.IsEmpty()) {
WorkItem* w = q.First();
w->Deque();
TRACE2("[%08X] running work item %08X",this,w);
if ((*w->iCallback != NULL) && (w->iArg1 != NULL))
{
TRAPD(err,(*w->iCallback)(w->iArg1,w->iArg2,w->iArg3));
}
if (w->iEvent)
{
TRACE2("[%08X] setting event for work item %08X",this,w);
SetEvent(w->iEvent);
}
MemFree(w);
}
}