IOCP 主要函数 整理

一直想单独写一个在win下的使用IOCP的网络层,鉴于整体的框架没有想好,首先把所用函数和自己的想法整理出来,以便将来使用

 

BOOL GetQueuedCompletionStatus(

  HANDLE CompletionPort,

  LPDWORD lpNumberOfBytes,

  PULONG_PTR lpCompletionKey,

  LPOVERLAPPED *lpOverlapped,

  DWORD dwMilliseconds);

 

CompletionPort:指定的IOCP,该值由CreateIoCompletionPort函数创建  (即创建的iocp句柄) 

lpnumberofbytes:一次完成后的I/O操作所传送数据的字节数。 (传递的是整形引用)

lpcompletionkey:当文件I/O操作完成后,用于存放与之关联(一般情况下,我在这里投递一个存放内存的结构体,并标示io操作)

lpoverlapped:为调用IOCP机制所引用的OVERLAPPED结构(这个结构体可在普通结构提的基础上扩展,实现伸缩性,我认为这个结构体存放的即为上下文)

dwmilliseconds:用于指定调用者等待的时间。(一般都不希望等待,所以通常为0)

 

BOOL PostQueuedCompletionStatus(

  HANDLE CompletlonPort,

  DW0RD dwNumberOfBytesTrlansferred,

  DWORD dwCompletlonKey,

  LPOVERLAPPED lpoverlapped,

  );

 

向消息队列传递的信息,可以根据信息的不同设置协议,比如传递PostQueuedCompletionStatus(hCompletionPort, 0, 0, NULL)一般用作关闭套接字

 

HANDLE CreateIoCompletionPort(
    HANDLE FileHandle,
    HANDLE ExistingCompletionPort,
    ULONG_PTR CompletionKey,
    DWORD NumberOfConcurrentThreads
);

 

在使用时需要注意的只有最后一个参数,他表示需要创建几个工作者线程。

未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值