Ana*_*iam 7 sockets performance tcp winsock
阻塞和非阻塞Winsock TCP套接字通常存在速度或性能差异吗?我可以得到两个套接字的差异,但两种类型之间没有详细的性能比较.
因为它与速度无关.的操作write和read只是内存复制的化身.他们所做的只是分别与内核复制数据.即他们实际上并不发送或接收任何东西.
阻塞与非阻塞功能要求:您是否希望阻止这些操作直到完成或返回-1,EAGAIN以防它们无法立即执行?例如,您从套接字读取但接收缓冲区中没有任何内容.你喜欢recv悬挂直到有什么东西出现或者返回-1 EAGAIN吗?
根据我的经验,非阻塞的winsock操作稍慢但可扩展性更强.事实是,当您执行非阻塞I/O(使用IOCP)时,您需要在应用程序级别进行两次系统调用以及一些调度,如果使用阻塞I/O,则需要进行一次系统调用.如果您有许多并发连接,则非阻塞I/O要快得多,因为如果实现良好,可以实现更高的可扩展性.
如果需要使用最大带宽从一点到另一点传输数据 - 请使用阻塞I/O. 如果需要处理许多并发客户端连接 - 请使用非阻塞I/O. 不要期望他们中的任何一个.
一般来说,这更多是关于"事件驱动vs线程"服务器架构,然后是"阻塞与非阻塞".没有可在任何情况下使用的通用服务器体系结构.这取决于应用程序.
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |