Windows IOCP - 单套接字应用程序有啥优势吗?

Posted

技术标签:

【中文标题】Windows IOCP - 单套接字应用程序有啥优势吗?【英文标题】:Windows IOCP - any advantage for single-socket application?Windows IOCP - 单套接字应用程序有什么优势吗? 【发布时间】:2010-09-29 00:53:51 【问题描述】:

据我了解 Windows Server 2003/2008 和 C++ 编程下的 IOCP,它们或多或少是服务多个套接字而不是选择的最高性能方式,或者将多个线程捆绑在一起以服务这些请求。

但是,如果我的程序只有一个套接字,并且考虑到其他约束通常会读取一个数据包,执行工作,然后等待另一个数据包,那么 IOCP 会给我带来什么吗?

在这种特定情况下,如果不是更快,感觉就像坐在一个 recv() 或等效程序中至少一样快?

【问题讨论】:

【参考方案1】:

不,在您的情况下,IOCP 的额外复杂性听起来没有必要。至少,除非您预计您的程序在不久的将来会变得更加复杂...

【讨论】:

【参考方案2】:

不,在这种情况下,IOCP 不太可能增加复杂性。当然,如果您已经熟悉 IOCP,并且您已经拥有可用于此单连接系统的工作代码,那么没有真正的理由不使用 IOCP,但如果您之前从未使用过它,那么它就不值得付出努力为您描述的系统学习它。

【讨论】:

以上是关于Windows IOCP - 单套接字应用程序有啥优势吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 C 绑定到 IOCP 的 UDP 套接字

并发程序设计6:IOCP

IOCP 服务器并使用单个 wsasend 发送数据

IOCP模型

将非 IOCP 客户端与 IOCP 服务器连接

IOCP、AcceptEx、重叠和 WSAEINVAL