unsigned int RequestQueue::WorkerThread(void *arg) { RequestQueue *queue = (RequestQueue*)arg; while (!queue->isTerminated) { WaitForSingleObject(queue->hRequestQueueEvent, INFINITE); while (true) { RequestQueueItem *item = NULL; { mir_cslock lock(queue->requestQueueLock); if (queue->requests.getCount() == 0) break; item = queue->requests[0]; queue->requests.remove(0); } if (item != NULL) queue->Execute(item); } } queue->hRequestQueueThread = NULL; return 0; }
unsigned int RequestQueue::AsyncSendThread(void *owner, void *arg) { RequestQueue *queue = (RequestQueue*)owner; RequestQueueItem *item = (RequestQueueItem*)arg; queue->Execute(item); return 0; }