多线程的代价
来源:互联网 发布:淘宝客的链接怎么看 编辑:程序博客网 时间:2024/06/02 08:00
从一个单线程的应用到一个多线程的应用并不仅仅带来好处,它也会有一些代价。不要仅仅为了使用多线程而使用多线程。而应该明确在使用多线程时能多来的好处比所付出的代价大的时候,才使用多线程。如果存在疑问,应该尝试测量一下应用程序的性能和响应能力,而不只是猜测。
设计更复杂
- 虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。
线程之间的交互往往非常复杂。不正确的线程同步产生的错误非常难以被发现,并且重现以修复。
上下文切换的开销
当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程。
上下文切换并不廉价。如果没有必要,应该减少上下文切换的发生。
增加资源消耗
- 线程在运行的时候需要从计算机里面得到一些资源。除了CPU,线程还需要一些内存来维持它本地的堆栈。
它也需要占用操作系统中一些资源来管理线程。我们可以尝试编写一个程序,让它创建100个线程,这些线程什么事情都不做,只是在等待,然后看看这个程序在运行的时候占用了多少内存。
小结
- 使用多线程的目的是为了提高效率,时效性,达到“物尽其才,人尽其用”,但却增加了维护成本(当然大公司不在乎这一点钱罢了),排错难度,对数据结构,数据并发控制也有一定影响。
阅读全文
1 0
- 多线程的代价
- 【java多线程的代价】
- 多线程的代价
- 多线程的代价
- 引入多线程的代价
- 多线程的代价
- 多线程的代价
- 多线程的代价
- 多线程的代价及上下文切换
- Java 并发 教程 - 多线程的代价
- Java并发系列-3、多线程的代价
- 3.多线程代价
- Java并发编程系列之三十:多线程的代价
- Java并发编程系列之六:多线程的代价
- 【Java.Concurrency】多线程的代价 & Why Threads Are A Bad Idea (for most purposes)
- Java并发编程(Java Concurrency)(3)- 多线程的代价
- 三无的代价
- 成熟的代价
- linux之统计文件特定字符串
- LookupError: unknown encoding: cp0
- MVN JETTY:RUN 报错 The plugin 'org.mortbay.jetty:maven-jetty-plugin' does not exis
- iOS app签名机制
- 5-3 多级派生类的构造函数
- 多线程的代价
- 有序单链表插入算法
- 排序算法 ✈
- ajax实现留言并在页面展示最新注册内容
- 使用inno setup制作安装包
- Python--小甲鱼学习笔记--第29课:文件读写、文件对比、文件分割、内容显示
- 弘智教育-效果图-渲染1-渲染设置,vr灯光
- 计算机视觉之OpenCV教程 ---Mat类基础(一)
- windows 下安装redis集群