是否有任何可扩展的 Win32 API(如 IOCP 而不是 select)可以在套接字上为您提供反应器式操作?AFAIK IOCP 允许您接收有关已完成操作的通知,例如读取或写入数据(前摄器),但我正在寻找反应器风格的操作:我需要在套接字可读或可写(反应器)时获得通知。
类似于 epoll、kqueue 的东西/dev/poll
?
Win32中有这样的API吗?如果是这样,我在哪里可以找到它的手册?
** 澄清:** 我需要select
像 IOCP 一样可扩展的套接字 API,或者我正在寻找一种在类似反应器的操作中使用 IOCP 的方法。
更详细的说明: IOCP 允许您在给定操作完成时收到通知。例如:
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
我怎样才能做到这一点?