关于多线程:单个CPU上有多个线程和性能

关于多线程:单个CPU上有多个线程和性能

Multiple threads and performance on a single CPU

在具有单个线程且没有超线程的CPU的计算机上使用多个线程是否对性能有好处?


就计算速度而言,不。实际上,由于管理线程的开销,事情将会放慢。

就响应能力而言,是的。例如,您可以让一个线程等待IO操作,而让另一个线程同时运行GUI。


这取决于您的应用程序。如果它花费所有时间使用CPU,那么多线程只会减慢速度-尽管您可以使用它来对用户做出更快的响应,从而给人留下更好的性能印象。

但是,如果您的代码受其他限制,例如使用文件系统,网络或任何其他资源,则多线程可以提供帮助,因为它允许您的应用程序异步运行。因此,当一个线程正在等待从磁盘加载文件时,另一个线程可能正在查询远程Web服务器,而另一个线程正在重绘GUI,而另一个线程正在进行各种计算。

使用多个线程还可以简化您的业务逻辑,因为您不必过多地关注各种独立任务的交错方式。如果操作系统的调度逻辑比您的调度逻辑更好,那么您确实可能会看到性能提高。


您可以考虑在单个CPU上使用多线程

  • 如果您使用网络资源
  • 如果您进行高强度的IO操作
  • 如果您从数据库中提取数据
  • 如果您可能会延迟利用其他东西
  • 如果您想让您的应用程序具有超高速反应
  • 当您不应该在单个CPU上使用多线程时

  • 高强度操作,CPU使用率几乎达到100%
  • 如果不确定如何使用线程和同步
  • 如果您的应用程序无法分为多个并行进程

  • 是的,在单个CPU上使用多个线程(或进程)是有好处的-如果一个线程正忙于等待某事,则其他线程可以继续做有用的工作。

    但是,这可以通过任务切换的开销来抵消。您必须在生产级硬件上对应用程序进行基准测试和/或分析,以找出答案。


    绝对!如果您执行任何类型的I / O,则拥有多线程系统将具有很大的优势。当一个线程等待I / O操作(相对较慢)时,另一个线程可以做有用的工作。


    不管可用的CPU数量如何,如果您需要抢先式多任务处理和/或具有异步组件的应用程序(即,几乎任何将响应式GUI与少量计算或连续I / O处理结合在一起的东西),多线程性能比替代方法要好得多,替代方法是为每个应用程序使用多个进程。

    这是因为同一进程中的线程可以共享多个内存上下文,因此与多个进程相比,它们可以更有效地交换数据。

    有关这些问题的简要介绍,请参见有关计算机多任务处理的Wikipedia文章。


    推荐阅读

      linux多线程下载命令?

      linux多线程下载命令?,软件,工具,平台,中心,系统,代理,网络,网站,手机,官方

      linux断开线程命令?

      linux断开线程命令?,系统,状态,工作,代码,线程,入口,网络,管理,名称,命令,lin

      linux的数学计算命令?

      linux的数学计算命令?,工作,系统,信息,地址,数字,目录,命令,百分比,情况,管

      linux查看性能的命令?

      linux查看性能的命令?,系统,情况,信息,数据,状态,指标,第一,分析,命令,宏观,l

      linux云计算查看命令?

      linux云计算查看命令?,系统,信息,地址,工作,命令,情况,标准,服务,软件,网络,l

      linux打开计算器命令?

      linux打开计算器命令?,密码,电脑,工作,设备,数字,系统,手机,指数,情况,服务,

      linux停止线程的命令?

      linux停止线程的命令?,系统,软件,代码,产品,进程,第一,管理,生产,通信,工具,l

      linux超线程查看命令?

      linux超线程查看命令?,系统,第一,信息,软件,命令,数据,工具,实时,界面,个数,L

      linux查看多线程命令?

      linux查看多线程命令?,系统,第一,线程,地址,数据,进程,命令,名称,软件,情况,

      linux执行线程命令?

      linux执行线程命令?,系统,工作,线程,软件,服务,管理,信息,环境,名称,命令,lin

      linux命令输出计算?

      linux命令输出计算?,标准,地址,工作,信息,系统,命令,软件,数据,文件,控制台,l

      linux计算总数命令?

      linux计算总数命令?,系统,第一,情况,数据,信息,电脑,命令,百分比,单位,工作,l

      linux中计算器命令?

      linux中计算器命令?,地址,数据,位置,网络,设备,时间,环境,平台,软件,命令,说

      linux线程操作命令?

      linux线程操作命令?,系统,工作,时间,代码,线程,信息,第一,命令,函数,操作,lin

      linux性能测试命令?

      linux性能测试命令?,数据,系统,工具,标准,设备,地址,情况,基础,网络,环境,如

      linux退出计算器命令?

      linux退出计算器命令?,工作,地址,系统,命令,通信,信息,电脑,目录,路径,操作,

      重启计算机linux命令?

      重启计算机linux命令?,系统,设备,工作,标准,名称,命令,状态,数据,服务,提示,L

      linux计算器打开命令?

      linux计算器打开命令?,工作,地址,命令,标准,管理,系统,目录,路径,管道,控制

      linux下载命令多线程?

      linux下载命令多线程?,系统,单位,概念,数据,线程,进程,产品,地址,代码,状态,

      linux计算摘要的命令?

      linux计算摘要的命令?,数据,网络,数字,密码,工具,名称,正规,标准,代码,文件,l