多线程编程的代价

从一个单线程的应用到一个多线程的应用并不仅仅带来好处,它也会有一些代价。不要仅仅为了使用多线程而使用多线程。而应该明确在使用多线程时能多来的好处比所付出的代价大的时候,才使用多线程。如果存在疑问,应该尝试测量一下应用程序的性能和响应能力,而不只是猜测。

  1. 增加设计的难度
    在程序设计时,如果涉及到共享资源的访问,需要谨慎的处理。线程之间的通信交互复杂。不正确的线程同步发生的错误很难发现,并且偶发性很强,不容易重现。
  2. 上下文切换的开销
    当CPU从一个线程切换到另外一个线程时,会对当前线程的数据进行存储,然后再载入要执行的线程的数据,程序指针等,这称之为上下文切换。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程。上下文的切换并不廉价。如果可能,尽量减少上下文的切换。(处理一个事情,不是分工越细越好,切换的代价太大)
  3. 资源的消耗
    线程保存有自己的数据、指针和PC,这些都保存在内存中。同样,系统中也需要对线程进行管理,这也消耗资源。因此,需要衡量线程的数量。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,776评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,171评论 1 32
  • 1.内存的页面置换算法 (1)最佳置换算法(OPT)(理想置换算法):从主存中移出永远不再需要的页面;如无这样的...
    杰伦哎呦哎呦阅读 3,396评论 1 9
  • 从1984年创立至今,海尔已经拥有34年的历史 作为全球白电第一品牌,海尔不断创新,不断颠覆,不断用科技为用户创造...
    王阿仄阅读 289评论 0 0
  • 罪恶感来源于对自己所做的事情的道德评判!评判标准即是社会道德标准!是儒家思想!是佛家思想!这些思想在无意识中被输入...
    竺子阅读 188评论 0 0