网络库中把iocp当做epoll来用,发送、接收都投递0字节。(实际的投递写事件,是投递的1字节数据; 投递0字节会立即返回,根本没检测是否可写)
最近压测时,发现大量连接下,若连接频繁断开,有些标记值会错误,这几天着手解决这个问题, 很诡异, 特记录。
假设A、B为iocp的工作线程。
C为逻辑线程。
若C线程中的一个socket链接要发送数据:
正确的做法是调用PostQueuedCompletionStatus函数投递;
会出问题的的做法是用WSASend投递(会引起诡异问题,我遇到的貌似是GetQueuedCompletionStatus返回了2次)。
转载于:https://www.cnblogs.com/lcinx/p/10570765.html