Пример #1
0
	static DWORD WINAPI ThreadMethod(LPVOID arg)
	{
		WorkerThread * workerThread = ((WorkerThread*)arg);
		assert(workerThread);

		Ttask task;
		while(!workerThread->IsStopped())
		{
			if(workerThread->_tasksQueue.IsEmpty())
			{
				WaitForSingleObject(workerThread->_newTaskArrived, INFINITE);
				OutputDebugString(L"WorkerThread Got signal!\n");
			}
			
			while(!workerThread->_terminateRequested && workerThread->_tasksQueue.Dequeue(&task))
			{
				workerThread->RunMethod(task);
			}
		}

		OutputDebugString(L"WorkerThread Exiting\n");
		return 0;
	}