IOCP 的 RIO 比事件有什么优势吗?

Tim*_*ith 4 sockets winapi

RIO 在这里代表 Windows8 'Registered I/O'网络扩展。从示例代码来看,似乎无论您是将 RIONotify 与事件还是 IO 完成端口一起使用,您基本上最终都会编写相同的循环,并且具有几乎相同的性能特征。循环体是:

RIONotify() [event or IOCP]
Wait [on the event, or using GetQueuedCompletionStatus()]
RIODequeueCompletion()
// Process the dequeued events
Run Code Online (Sandbox Code Playgroud)

基本上,IO 完成端口的使用似乎没有提供超过“事件”通知/等待的附加功能,因为实际的消息队列是使用 RIODequeueCompletion 完成的。因此,您使用事件还是 IOCP 都没有关系。我的问题是,我是否忽略了模型之间的任何有趣或重要的区别?

usr*_*usr 5

RIO 是关于向内核注册缓冲区以节省开销和更有效的队列管理。这不是根本性的转变。只是少了很多开销

IOCP 不是为了提高个人行动的表现。这是关于使用更少的线程和更少的上下文切换。RIO 更进一步。