CreateIoCompletionPort的问题
第三个参数CompletionKey如果填0会怎样?
提出这个问题是因为我发现在ACE5.5中,服务器创建客户端连接以后,初始化异步读操作时,调用CreateIoCompletionPort函数的CompletionKey参数为0,而连接并没有收到客户端发出的包
[解决办法]
CompletionKey可以为零,一般用它来传递参数,例如传递HANDLE或者指针
然后在GetQueuedCompletionStatus函数的lpCompletionKey中得到
这里的问题关键在于你的线程处理函数在GetQueuedCompletionStatus返回后
如何处理CompletionKey可以为零的情况
网上很多例子将CompletionKey为零作为退出的标志
[解决办法]
另外,PostQueuedCompletionStatus函数也可以dwCompletionKey为0
PostQueuedCompletionStatus(hComp, 0, 0, NULL)
线程中判断dwCompletionKey为0退出