【发布时间】:2010-08-22 20:10:51
【问题描述】:
我对以下概念感到困扰: 大多数书籍/文档都描述了多线程服务器的健壮性,最常见的方法是启动一个新线程来为每个新客户端提供服务。例如。一个线程专用于每个新连接。但这实际上是如何在大型系统中实现的呢?如果我们有一个服务器接受来自 100000 个客户端的请求,它已经启动了 100000 个线程?这是现实的吗?一个服务器可以运行多少个线程没有限制吗?另外上下文切换和同步的开销,它不会降低性能吗?它是作为队列和线程的混合实现的吗?在这种情况下,队列的数量是固定的吗?任何人都可以启发我,也许给我一个很好的参考来描述这些?
谢谢!
【问题讨论】:
-
一个 .NET 线程的堆栈大小为 1MB,100000 个线程需要 100GB 的 RAM 才能保持线程运行,显然不现实。
标签: java c++ multithreading performance