首页
社区
课程
招聘
[求助]overlappede i/o需要几个 for 循环
发表于: 2014-9-23 14:57 2395

[求助]overlappede i/o需要几个 for 循环

2014-9-23 14:57
2395
王艳萍的 windows网络 这本书里,有个例子:

这是基于overlappede i/o 封装的。

        while(TRUE)
        {
                int nIndex =
                        ::WSAWaitForMultipleEvents(g_nBufferCount + 1, g_events, FALSE, WSA_INFINITE, FALSE);
                if(nIndex == WSA_WAIT_FAILED)
                {
                        printf("WSAWaitForMultipleEvents() failed \n");
                        break;
                }
                nIndex = nIndex - WSA_WAIT_EVENT_0;
                for(int i=0; i<=nIndex; i++)
                {
                        int nRet = ::WSAWaitForMultipleEvents(1, &g_events[i], TRUE, 0, FALSE);
                        if(nRet == WSA_WAIT_TIMEOUT)
                                continue;
                        else
                        {
                                ::WSAResetEvent(g_events[i]);
                                // 重新建立g_events数组
                                if(i == 0)
                                {
                                        RebuildArray();
                                        continue;
                                }

                                // 处理这个I/O
                                PBUFFER_OBJ pBuffer = FindBufferObj(g_events[i]);
                                if(pBuffer != NULL)
                                {
                                        if(!HandleIO(pBuffer))
                                                RebuildArray();
                                }
                        }
                }
        }
}

这代码里的:
for(int i=0; i<=nIndex; i++)
用的怪怪的,

怎么回事?

还有, 这个for循环,是否必要?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//