【发布时间】:2010-10-29 22:20:59
【问题描述】:
我正计划制作一个具有大量对等网络连接的软件。通常我会为每个连接创建一个自己的线程来发送和接收数据,但在这种情况下,有 300-500+ 个连接,这意味着不断创建和销毁大量线程,我猜这将是一个很大的开销。并且让一个线程按顺序处理所有连接可能会减慢一点速度。 (我不太确定。)
问题是:处理这类问题的最佳线程数是多少?是否有可能在软件中计算它,以便它可以决定自己在没有那么多资源的旧计算机上创建更少的线程,而在新计算机上创建更多线程?
这是一个理论问题,我不想让它依赖于实现或语言。但是我认为很多人会建议“只需使用ThreadPool,它会处理这样的事情”,所以假设它不是.NET 应用程序。 (我可能不得不在旧的 Delphi 项目中使用代码的其他部分,因此语言可能是 Delphi 或 C++,但尚未确定。)
【问题讨论】:
标签: multithreading