代码之家  ›  专栏  ›  技术社区  ›  Eric Z Beard

如何最小化tcp服务器应用程序中使用的线程数?

  •  4
  • Eric Z Beard  · 技术社区  · 17 年前

    为了解决这个问题,我们假设请求的寿命相对较长(几分钟),并且流量对时间敏感,因此在响应消息时不允许延迟。此外,我们都在为来自客户端的请求提供服务,并建立与其他服务器的连接。

    4 回复  |  直到 17 年前
        1
  •  6
  •   Shog9    10 年前

    每当您打开一个套接字时,它都与选择器相关联。使用单个线程轮询该选择器。无论何时,只要子线程到达,将继续执行轮询操作,并且将关闭子线程。

    这样,每个并发操作只需要一个线程。打开但空闲的插座不会绑住螺纹。

        2
  •  4
  •   Hugo    17 年前

    有了IO完成端口,您就可以让操作系统来管理轮询,这使得操作系统可以利用NIC驱动程序支持进行非常高级别的优化。

    几年前,Len Holgate在Codeproject上写了一个关于IO完成端口的ECElent系列: http://www.codeproject.com/KB/IP/jbsocketserver2.aspx

    和 我找到了一篇关于.net IO完成端口的文章(但还没有读过) http://www.codeproject.com/KB/cs/managediocp.aspx

        3
  •  2
  •   Len Holgate    15 年前

    如果你直接使用C++和Win32,那么我建议你读一下重叠的I/O和I/O完成端口。我有一个免费的C++,IOCP,客户机/服务器框架,完整的源代码,请参阅 here

    http://www.lenholgate.com/blog/2005/07/disappointing-net-sockets-article-in-msdn-magazine-this-month.html

        4
  •  0
  •   Rob Wells    17 年前

    G'day,

    首先,我要看一看您希望用于线程框架的隐喻。

    你可能想去参观博物馆 Reactor

    推荐文章