读书人

CreateIoCompletionPort的有关问题

发布时间: 2012-02-02 23:57:14 作者: rapoo

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退出

读书人网 >VC/MFC

热点推荐