事件对象 (Windows 套接字 2)
引入重叠 I/O 需要一种机制,使应用程序明确将发送和接收请求与其后续完成指示相关联。 在 Windows 套接字 2 中,这是使用在 Windows 事件后建模的事件对象完成的。 Windows Sockets 事件对象是相当简单的构造,可以创建和关闭、设置和清除,并等待和轮询。 其主要实用工具是应用程序阻止并等待一个或多个事件对象设置的功能。
应用程序使用 WSACreateEvent 来获取事件对象句柄,该句柄随后可以作为必需参数提供给发送和接收调用的重叠版本(WSASend、WSASendTo、WSARecv、WSARecvFrom)。 首次创建时清除的事件对象由传输提供程序设置,当关联的重叠 I/O作完成时(已成功或出错)。 WSACreateEvent 创建的每个事件对象都应具有匹配的 WSACloseEvent 来销毁它。
事件对象还用于 WSAEventSelect,将一个或多个FD_XXX网络事件与事件对象相关联。 使用事件对象异步通知中所述。
在 32 位环境中, 事件对象相关的函数,包括 WSACreateEvent、WSACloseEvent、WSASetEvent、WSAResetEvent和 WSAWaitForMultipleEvents 直接映射到相应的本机 Windows 函数, 使用相同的函数名称,但没有 WSA 前缀。