
Multiple threads and performance on a single CPU在具有单个线程且没有超线程的CPU的计算机上使用多个线程是否对性能有好处? 就计算速度而言,不。实际上,由于管理线程的开销,事情将会放慢。 就响应能力而言,是的。例如,您可以让一个线程等待IO操作,而让另一个线程同时运行GUI。 这取决于您的应用程序。如果它花费所有时间使用CPU,那么多线程只会减慢速度-尽管您可以使用它来对用户做出更快的响应,从而给人留下更好的性能印象。 但是,如果您的代码受其他限制,例如使用文件系统,网络或任何其他资源,则多线程可以提供帮助,因为它允许您的应用程序异步运行。因此,当一个线程正在等待从磁盘加载文件时,另一个线程可能正在查询远程Web服务器,而另一个线程正在重绘GUI,而另一个线程正在进行各种计算。 使用多个线程还可以简化您的业务逻辑,因为您不必过多地关注各种独立任务的交错方式。如果操作系统的调度逻辑比您的调度逻辑更好,那么您确实可能会看到性能提高。 您可以考虑在单个CPU上使用多线程 当您不应该在单个CPU上使用多线程时 是的,在单个CPU上使用多个线程(或进程)是有好处的-如果一个线程正忙于等待某事,则其他线程可以继续做有用的工作。 但是,这可以通过任务切换的开销来抵消。您必须在生产级硬件上对应用程序进行基准测试和/或分析,以找出答案。 绝对!如果您执行任何类型的I / O,则拥有多线程系统将具有很大的优势。当一个线程等待I / O操作(相对较慢)时,另一个线程可以做有用的工作。 不管可用的CPU数量如何,如果您需要抢先式多任务处理和/或具有异步组件的应用程序(即,几乎任何将响应式GUI与少量计算或连续I / O处理结合在一起的东西),多线程性能比替代方法要好得多,替代方法是为每个应用程序使用多个进程。 这是因为同一进程中的线程可以共享多个内存上下文,因此与多个进程相比,它们可以更有效地交换数据。 有关这些问题的简要介绍,请参见有关计算机多任务处理的Wikipedia文章。 |