首页 > 技术文章 > IOCP 下行为投递的关键点

lcinx 2019-03-21 12:05 原文

网络库中把iocp当做epoll来用,发送、接收都投递0字节。(实际的投递写事件,是投递的1字节数据; 投递0字节会立即返回,根本没检测是否可写)

最近压测时,发现大量连接下,若连接频繁断开,有些标记值会错误,这几天着手解决这个问题, 很诡异, 特记录。


假设A、B为iocp的工作线程。

C为逻辑线程。

若C线程中的一个socket链接要发送数据:
    正确的做法是调用PostQueuedCompletionStatus函数投递;
    会出问题的的做法是用WSASend投递(会引起诡异问题,我遇到的貌似是GetQueuedCompletionStatus返回了2次)。

推荐阅读