RIO 在这里代表 Windows8 'Registered I/O'网络扩展。从示例代码来看,似乎无论您是将 RIONotify 与事件还是 IO 完成端口一起使用,您基本上最终都会编写相同的循环,并且具有几乎相同的性能特征。循环体是:
RIONotify() [event or IOCP]
Wait [on the event, or using GetQueuedCompletionStatus()]
RIODequeueCompletion()
// Process the dequeued events
基本上,IO 完成端口的使用似乎没有提供超过“事件”通知/等待的附加功能,因为实际的消息队列是使用 RIODequeueCompletion 完成的。因此,您使用事件还是 IOCP 都没有关系。我的问题是,我是否忽略了模型之间的任何有趣或重要的区别?
最佳答案
RIO 是关于向内核注册缓冲区以节省开销和更有效的队列管理。这不是根本性的转变。刚刚a lot less overhead .
IOCP 不是为了提高个人行动的表现。这是关于使用更少的线程和更少的上下文切换。 RIO 更进一步。
关于sockets - IOCP 的 RIO 比事件有什么优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32894026/