重叠IO的wsaoverlapped结构
IO重叠就是一次调用向多端异步发送数据
1、SOCKET WSAScoket(…)创建重叠IO套接字(最后的参数传入WSA_FLAG_OVERLAPPED才具有IO重叠的特性)
2、使用WSASend函数发送IO重叠数据,末尾flag传入
(如果发送的数据很小可以一次性传输调用该函数会返回0,反之会返回SOCKET_ERROR,并将WSA_IO_PENDING注册为错误代码)
3、WSARecv函数用于接收数据
4、通过WSAGetOverlappedResult函数判断io完成和结果
感觉功能上和异步IO差不多
使用Completion Routine函数
IO完成时调用注册过的函数进行事后处理,这就是Completion Routine的运作方式。如果执行重要任务时突然执行该函数可能破坏程序的正常执行,所以只有线程处于alertable wait状态时才会调用。alertable wait是等待接收操作系统消息的状态。调用下列函数可以使线程处于这种状态