void* ThreadPool::serviceHandler () { TRACE_CALL; EventHandler* pEventHandler; while (1) { ::taskPrioritySet (::taskIdSelf (), m_thrPriority); pEventHandler = 0; // remove() will block until a job is inserted into the Q. if (remove (pEventHandler) < 0) break; if (pEventHandler == 0) break; REACTOR_HANDLE handle = pEventHandler->handleGet (); if (pEventHandler->handleInput (handle) < 0) pEventHandler->handleClose (handle); } VxCritSec cs (m_threadCountLock); queueSizeSet (--m_threadCount); return 0; }