大多数情况下,您会听到每个多线程连接模型(非阻塞IO)比每个连接线程模型(阻塞io)好得多。并且推理听起来像“每个连接线程的方法创建了太多的线程,并且很多开销与维护这么多线程相关联”。但是没有解释这个开销。
你有什么想法?
答案 0 :(得分:1)
有两个开销:
大多数服务器都没有高负载,因为这样可以减少负载峰值的安全余量。因此,第(2)点主要与人工负荷相关,例如基准(旨在证明一点......)。
堆栈节省是99%的原因。
是否需要权衡开发时间和代码复杂性以节省内存取决于您拥有多少连接。在10个连接处,这不是一个问题。在10000个连接处,基于线程的模型变得不可行。
您在问题中陈述的要点是正确的。
也许你对“共同的智慧”这一事实感到困惑。是永远使用非阻塞套接字IO?实际上,这种(虚假的)宣传正在网络上随处传播。宣传工作通过反复做出同样简单的陈述而起作用。