初窥多线程:多线程的优点、缺点 以及 应用场合
2011-05-20 16:44
330 查看
最近有个任务涉及到多线程编程,就在网上了解了一些多线程的相关内容,总结如下。
优势:
·在一些需要等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等。
·程序的运行速度可能加快
劣势:
(1)等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。因此,如果能够单任务实现的应用场合,没有必要加入多线程技术。
(2)对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。当这种负担超过一定程度时,多线程的特点主要表现在其缺点上,比如用独立的线程来更新数组内每个元素。
(3)线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。
(4)对互斥对象的访问,需要一定的开销做到线程同步管理。
使用场合:
大多情况下,要用到多线程的主要是
A、耗时或大量占用处理器的任务,阻塞用户界面操作。
B、各个任务必须等待外部资源(如远程文件或 Internet连接)。
比如:读写文件、视频图像的采集、处理、显示、保存等。
举例:
比如下载文件,你要一边下载一边显示进度一边保存,在这种情况下,如果没有用多线程的话,没有意外的话一般都会把主线程阻塞,比如进度条的进度根本没有随着已下载的量而变化,堪至是整个窗体都动不了,用多线程就可以很好地解决这个问题。
优势:
·在一些需要等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等。
·程序的运行速度可能加快
劣势:
(1)等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。因此,如果能够单任务实现的应用场合,没有必要加入多线程技术。
(2)对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。当这种负担超过一定程度时,多线程的特点主要表现在其缺点上,比如用独立的线程来更新数组内每个元素。
(3)线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。
(4)对互斥对象的访问,需要一定的开销做到线程同步管理。
使用场合:
大多情况下,要用到多线程的主要是
A、耗时或大量占用处理器的任务,阻塞用户界面操作。
B、各个任务必须等待外部资源(如远程文件或 Internet连接)。
比如:读写文件、视频图像的采集、处理、显示、保存等。
举例:
比如下载文件,你要一边下载一边显示进度一边保存,在这种情况下,如果没有用多线程的话,没有意外的话一般都会把主线程阻塞,比如进度条的进度根本没有随着已下载的量而变化,堪至是整个窗体都动不了,用多线程就可以很好地解决这个问题。
相关文章推荐
- 单页面的应用,以及优点和缺点
- 单例的优点,缺点以及应用场景
- 为什么要使用多线程?多线程的优点和缺点是什么?
- <转>boost::any的用法、优点和缺点以及源代码分析
- JDBC、Ibatis、Hibernate对比、以及优点缺点
- JDBC、Ibatis、Hibernate对比、以及优点缺点
- 项目管理:项目成本估算的方法以及它们的优点和缺点
- 理解iOS多线程应用的开发以及线程的创建方法
- 多线程在Android中的应用以及线程间的通信
- redis 并发处理,多线程以及synchronized锁的应用
- boost::any的用法、优点和缺点以及源代码分析
- Redis数据类型,以及应用场合
- boost::any的用法、优点和缺点以及源代码分析
- android多线程与界面交互以及runOnUiThread简单应用
- 流畅的python--dict的优点以及缺点
- ejb与javaBean的区别以及应用场合
- 第26课 如何设置绘图 以及 多线程的应用
- 推荐系统中常用算法 以及优点缺点对比
- JDBC、Ibatis、Hibernate对比、以及优点缺点(个人总结)
- [置顶] 【mysql 存储过程】应用存储过程的优点与缺点