+ -
当前位置:首页 → 问答吧 → IOCP编程,lpComletionKey和lpOverlapped参数是什么意思

IOCP编程,lpComletionKey和lpOverlapped参数是什么意思

时间:2011-12-20

来源:互联网

BOOL WINAPI GetQueuedCompletionStatus(
  __in          HANDLE CompletionPort,
  __out         LPDWORD lpNumberOfBytes,
  __out         PULONG_PTR lpCompletionKey,
  __out         LPOVERLAPPED* lpOverlapped,
  __in          DWORD dwMilliseconds
);

这个函数原型我搬来了,看了一天技术博客我已经晕掉了,求各位大虾大牛讲讲lpCompletionKey,尤其是lpOverlapped到底是怎么用的,越浅显易懂越好,实在是不会了……
(我知道lpOverlapped是和重叠IO有关,但是实在不知怎么用啊)

作为一名菜鸟级非雄性程序员,谢谢大家了T_T

作者: jenniferty   发布时间: 2011-12-20

lpcompletionkey:当文件I/O操作完成后,用于存放与之关联的completion key。 
lpoverlapped:为调用IOCP机制所引用的OVERLAPPED结构。

二者都是指针参数。

该函数用于实现从指定的IOCP获取CP。当CP队列为空时,对此函数的调用将被阻塞,而不是一直等待I/O的完成。当CP队列不为空时,被阻塞的线程将以后进先出(LIFO)顺序被释放。对于IOCP机制,它允许多线程并发调用GetQueuedCompletionStatus函数,最大并发数是在调用CreateIoCompletionPort函数时指定的,超出最大并发数的调用线程,将被阻塞。

调用成功,则返回非零数值,相关数据存于lpNumberOfBytes、lpCompletionKey、lpCompletionKey变量中

更详细的解释楼主可参考:http://tech.ddvip.com/2009-09/1254299357134884.html

作者: fight_in_dl   发布时间: 2011-12-20

我最近也刚开始学IOCP,遇到N多问题,不过现在还算了解了不少,慢慢积累,一口吃不成胖子
http://blog.csdn.net/yu52000guang/article/details/7061382

作者: yu52000guang   发布时间: 2011-12-20