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;
}