是否有任何可扩展的 Win32 API(例如 IOCP 而不是 select)可以为您提供反应器风格 套接字上的操作? AFAIK IOCP 允许您接收有关已完成操作的通知 就像数据读取或写入(前摄器)但我正在寻找反应器风格的操作:我 当套接字可读或可写(反应器)时需要收到通知。
类似于 epoll、kqueue 的东西,
/dev/poll
?
Win32中有这样的API吗?如果可以的话我在哪里可以找到它的手册?
** 说明:** 我需要像 IOCP 一样可扩展的套接字 api,或者我正在寻找一种在类似反应器的操作中使用 IOCP 的方法。
更多说明:
IOCP 允许您在完成给定操作时收到通知。例如:
select
所以我在操作完成后收到通知——监考风格的操作。
我需要的是这样的东西:
WSARecv(buffer,...); // start reading
WSAWaitForMultipleEvents(...); // wait when read is done
我该怎么做?
您想查看
WSARecv( NOTHING ); // start waiting for readability (not actual read)
WSAWaitForMultipleEvents(...); // wait until read would not block
// Now WSARecv would not block
WSARecv(buffer,...); // now actual non-blocking read
)。
不可能。
WSAWaitForMultipleEvents
您是否尝试过将零 nNumberOfBytesToRead 传递给例如 ReadFile(socket_fd, ..)?