zoukankan      html  css  js  c++  java
  • 1、程序什么时候应该使用线程,什么时候单线程效率高?(转)

    原文:https://blog.csdn.net/Fly_as_tadpole/article/details/82765308 

    1.耗时的操作使用线程,提高应用程序响应。
    2.并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。 
    3.多CPU系统中,使用线程提高CPU利用率 
    4.改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。

    进程与线程的选择取决以下几点:

    1、需要频繁创建销毁的优先使用线程;因为对进程来说创建和销毁一个进程代价是很大的。

    2、线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应

    3、因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布用线程;

    4、并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求;

    5、需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。

    不论什么时候只要能用单线程就不用多线程,只有在需要响应时间要求比较高的情况下用多线程。某操作允许并发而且该操作有可能阻塞时,用多线程。

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    线程很有用,但当使用线程时,可能会在解决老问题的同时产生新问题。例如要开发一个字处理程序,并想让打印功能作为单独的线程自己执行。这听起来是很好的主意,因为在打印时,用户可立即返回,开始编辑文档。但这样一来,在该文档被打印时文档中的数据就有可能被修改,打印的结果就不再是所期望的内容。也许最好不要把打印功能放在单独的线程中,不过如果一定要用多线程的话,也可以考虑用下面的方法解决:

    第一种方法是锁定正在打印的文档,让用户编辑其他的文档,这样在结束打印之前,该文档不会作任何修改;

    第二个方法可能更有效一些,即可以把该文档拷贝到一个临时文件中,打印这个临时文件的内容,同时允许用户对原来的文档进行修改。当包含文档的临时文件打印完成时,再删去这个临时文件。

    通过上面的分析可以看出,多线程在帮助解决问题的同时也可能带来新问题。因此有必要弄清楚,什么时候需要创建多线程,什么时候不需要多线程。总的来说,多线程往往用于在前台操作的同时还需要进行后台的计算或逻辑判断的情况,而对于GUI(图形用户接口),除了开发MDI(多文档界面)应用程序外,应尽量不使用多线程。
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    多线程
    1、就如多了几副碗筷,可以抢占更多的系统资源,加快可以分割成独立执行单元的程序段运行
    2、提供良好的操作感受:不在UI主线程执行费时的作业(这些作业以线程运行)
    3、响应多个并行的请求

    ----------------------------------------------------------------------------------------------------------------------------

    简单的顺序执行方式不能满足要求的时候需要考虑多线程实现,或者有些多任务管理时也需要用到多线程,否则无法并行执行不同功能等等吧。

    单线程好比所有工作都要你自己干,那样你只能一样一样来,多进程好比你把这些工作分给若干人,大家同步进行,同步进行的好处是大家各干各的,除了接口外,其他工作都独立完成,这样不管是逻辑还是时间上都更加合理,就好象你们单位的若干部门协调工作一样。如果所有部门的工作都要你们老总一个人干,那就是单线程了。
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    什么时候单线程效率高?

    对于处理时间短的服务或者启动频率高的要用单线程,相反用多线程!

  • 相关阅读:
    SharePoint 2013 通过HttpModule 管理视图权限
    SharePoint 2013 内容部署报错
    SharePoint 2013 日历视图兼容性问题
    SharePoint 2013 JavaScript 对象判断用户权限
    SharePoint 2013 PowerShell命令备份还原报错
    SharePoint 2013 修改表单认证登录页面
    SharePoint 2013 表单认证使用ASP.Net配置工具添加用户
    linux下永久添加静态路由
    CAN协议,系统结构和帧结构
    STM32串口的设置和库函数的介绍
  • 原文地址:https://www.cnblogs.com/westlife-11358/p/10469304.html
Copyright © 2011-2022 走看看