博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多进程与多线程的优缺点
阅读量:4286 次
发布时间:2019-05-27

本文共 813 字,大约阅读时间需要 2 分钟。

多线程优点:

无需跨进程边界;

程序逻辑和控制方式简单;
所有线程可以直接共享内存和变量;
线程方式消耗的总资源比进程方式好;

多线程缺点:

每个线程与主程序共用地址空间,受限于2GB地址空间;

线程之间的同步和加锁控制比较麻烦;
一个线程的崩溃可能影响到整个程序的稳定性;
到达一定的线程数程度后,即使再增加CPU也无法提高性能;
线程能够提高的总性能有限,而且线程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU

多进程优点:

每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;

通过增加CPU,就可以容易扩充性能;
可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;
每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大

多线程缺点:

逻辑控制复杂,需要和主程序交互;

需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算
多进程调度开销比较大;

综合

在Linux系统中,当不同的任务需要大量的共享数据或频繁通信时采用多线程,其它情况采用多进程。一个生活上的实例来理解多进程多线程。如需要做饭,首先会将米洗好拿去煮,在煮的过程中人还一边做其它的事情,如洗肉切肉等。人还是一个人,但同时处理多件事情,这大大地提高了效率。使用多进程多线程时,cpu还是需要同样多的时间来完成同样的任务,但多进程多线程能够让cpu穿插地处理各个事件,在某些情况下能够提高了执行效率。

并不是说所有情况下用多进程多线程都是好事,因为多进程多线程的情况下,CPU还要花时间去维护,CPU处理各进程线程的请求时在进程线程间的切换也要花时间,所以一般情况下是可以不用多进程多线程的,用了有时反而会得不偿失。大多情况下,要用到多进程多线程的主要是需要处理大量的IO操作或处理的情况需要花大量的时间等等,比如:读写文件、视频图像的采集、处理、显示、保存等。

转载地址:http://mmigi.baihongyu.com/

你可能感兴趣的文章
ExtJs4.2学习--Ext.tab.Panel 选项卡
查看>>
mybatis+spring+struts2框架整合
查看>>
你真正理解java的字符类型了吗?(bit,byte,short,int等字符类型)
查看>>
数据挖掘开源软件:WEKA基础操作
查看>>
Python一些容易忽略的知识
查看>>
Ubuntu(-13.10)中安装JDK图文详解教程
查看>>
Hadoop2.2.0单节点安装和配置环境图文详解
查看>>
数据挖掘学习笔记--决策树C4.5
查看>>
数据挖掘学习笔记之人工神经网络(一)
查看>>
数据挖掘学习笔记之人工神经网络(二)
查看>>
人工神经网络关键核心知识点
查看>>
贝叶斯学习--极大后验概率假设和极大似然假设
查看>>
贝叶斯学习--极大后验假设学习
查看>>
朴素贝叶斯分类器
查看>>
贝叶斯学习举例--学习分类文本
查看>>
hadoop HDFS原理基础知识
查看>>
数据挖掘十大算法----EM算法(最大期望算法)
查看>>
android StrictMode应用
查看>>
TabHost的两种使用方法
查看>>
Android---TextView属性详解
查看>>