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

标签 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

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

最佳答案

RIO 是关于向内核注册缓冲区以节省开销和更有效的队列管理。这不是根本性的转变。刚刚a lot less overhead .

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

关于sockets - IOCP 的 RIO 比事件有什么优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32894026/

相关文章:

c# - 关闭来自不同进程的套接字/端口连接

python - 如何中断在 Python 的不同线程中运行的 socket.accept()?

python - 防止应用程序因 'connection refused' 错误而关闭

c++ - 该进程似乎已死锁。所有线程都已停止工作

javascript - 在 Angular.js View 更改时多次触发 Socket.io 事件

c - 套接字编程: How to handle multiple clients in c

c++ - 如何使用 Direct8 dll 编译/调试 Visual Studio 2012 Win32 项目

c - 将数据存储在自定义索引: GWLP_USERDATA_EX?中

c# - 如何通过名称关闭窗口?

windows - DDE:实现通过 Shell 和 ddeexec 正确启动的应用程序