IOCP 下行为投递的关键点

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

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


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

C为逻辑线程。

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

posted @ 2019-03-21 12:05  lcinx  阅读(296)  评论(0编辑  收藏  举报