事件对象 (Windows套接字 2)

引入重叠的 I/O 需要一种机制,使应用程序明确将发送和接收请求与其后续完成指示相关联。 在Windows套接字 2 中,这是使用在Windows事件之后建模的事件对象完成的。 Windows Sockets 事件对象是相当简单的构造,可以创建和关闭、设置和清除,并等待和轮询。 其主要实用工具是应用程序阻止并等待一个或多个事件对象设置的功能。

应用程序使用 WSACreateEvent 获取事件对象句柄,该句柄随后可作为所需参数提供给发送和接收调用的重叠版本, ( WSASend、WSASendToWSARecvWSARecvFrom) 。 在首次创建时清除的事件对象由传输提供程序设置,当关联的重叠 I/O 操作成功完成 (或错误) 。 WSACreateEvent 创建的每个事件对象都应具有匹配的 WSACloseEvent 来销毁它。

WSAEventSelect 中还使用事件对象将一个或多个FD_XXX网络事件与事件对象相关联。 这在 使用事件对象的异步通知中介绍。

在 32 位环境中,事件对象相关的函数(包括 WSACreateEvent、WSACloseEventWSASetEvent、WSAResetEventWSAWaitForMultipleEvents)直接映射到相应的本机Windows函数,使用相同的函数名称,但不包含 WSA 前缀。