IOCP工作线程求科普解决方案

IOCP工作线程求科普
DWORD WINAPI CSessionManager::_RecvWorkThread(LPVOID lpParam)
{
    return GetInstance()->RecvWorkThread(lpParam);
}

DWORD CSessionManager::RecvWorkThread(LPVOID lpParam)
{
    int                 nRet = ERR_NONE;
    DWORD               dwTransferred;
    CSession*           pSession = NULL;
    LPKG_SOCKET_DATA    lpSockData = NULL;

    while (m_isSrvRun)
    {
        dwTransferred = 0;
        if (GetQueuedCompletionStatus(m_hCompletionPort, &dwTransferred, (PULONG_PTR)pSession, (LPOVERLAPPED *)&lpSockData, WSA_INFINITE))
        {
            if (dwTransferred == 0)
            {//SOCKET 异常

            }
            else
            {
                switch (lpSockData->opType)
                {
                case IO_READ:
                    {
                        pSession->RecvDbData(lpSockData, dwTransferred);
                    }
                    break;
                case  IO_WRITE:
                    break;
                case IO_ACCEPT: