同步和异步
同步异步的关键是函数的调用时刻和返回时刻与数据传输的开始时刻和完成时刻,数据传输指输出或输入到缓冲。
异步通知IO模型
通知IO指发生了IO相关操作,通知输入缓冲有数据需要读取,输出缓冲无数据可以写入。
select方式是典型的通知IO模型,select方式一般是同步通知,select返回时说明有IO可以处理。设置超时之后,可以编写类似异步方式的代码,但select注册的监视对象已经不处于监视状态,下次需要重新注册,这便是不同之处。
异步通知IO模型中函数的返回与IO状态无关,指定IO监视对象的函数和实际验证状态变化的函数是分开的。指定监视对象后可以离开去做其他事情,之后再回来验证状态变化。异步处理的不是IO,而是通知。
Windows API
WSACreatEvent函数返回事件对象句柄
WSACloseEvent函数关闭计数
WSAEventSelect函数指定某一套接字为事件监视对象
WSAWaitForMultipleEvents函数验证是否发生事件
WSAEnumNetworkEvents函数区分事件类型