多线程和多进程的区别(内存模型)

多线程和多进程的区别(内存模型)一. 在Linux下编程多用多进程编程少用多线程编程IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical sec

一文讲解进程、线程、多进程、多线程的优缺点

一. 在Linux下编程多用多进程编程少用多线程编程

IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好,而且在经过实际编程之后,综合来看我觉得linux更适合做high performance server,不过在多线程这个具体的领域内,linux还是稍逊windows一点。这应该是情有可原的,毕竟unix家族都是从多进程过来的,而 windows从头就是多线程的。

如果是UNIX/linux环境,采用多线程没必要。多线程比多进程性能高?误导!应该说,多线程比多进程成本低,但性能更低。在UNIX环境,多进程调度开销比多线程调度开销,没有显著区别,就是说,UNIX进程调度效率是很高的。内存消耗方面,二者只差全局数据区,现在内存都很便宜,服务器内存动辄若干G,根本不是问题。

多进程是立体交通系统,虽然造价高,上坡下坡多耗点油,但是不堵车。多线程是平面交通系统,造价低,但红绿灯太多,老堵车。就比如我们都开跑车,油(主频)不是问题,也不怕上坡下坡,但就怕堵车。

高性能交易服务器中间件,如TUXEDO,都是主张多进程的。实际测试表明,TUXEDO性能和并发效率是非常高的。TUXEDO是贝尔实验室的,与UNIX同宗,应该是对UNIX理解最为深刻的,他们的意见应该具有很大的参考意义。

一文讲解进程、线程、多进程、多线程的优缺点

二. 进程

1. 进程的优点

顺序程序的特点:具有封闭性和可再现性;程序的并发执行和资源共享。多道程序设计出现后,实现了程序的并发执行和资源共享,提高了系统的效率和系统的资源利用率。

2. 进程的缺点

操作系统调度切换多个线程要比切换调度进程在速度上快的多。而且进程间内存无法共享,通讯也比较麻烦。线程之间由于共享进程内存空间,所以交换数据非常方便;在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。三. 线程

1. 线程的优点

它是一种非常”节俭”的多任务操作方式。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种”昂贵”的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。当然,在具体的系统上,这个数据可能会有较大的区别;线程间方便的通信机制,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便;

使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上;

2. 线程的缺点

调度时, 要保存线程状态,频繁调度, 需要占用大量的机时;程序设计上容易出错(线程同步问题)。四. 多进程

1. 多进程优点

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

2. 多进程缺点

逻辑控制复杂,需要和主程序交互;需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算多进程调度开销比较大;五. 多线程

1. 多线程的优点

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

2. 多线程缺点

每个线程与主程序共用地址空间,受限于2GB地址空间;线程之间的同步和加锁控制比较麻烦;一个线程的崩溃可能影响到整个程序的稳定性;到达一定的线程数程度后,即使再增加CPU也无法提高性能,例如Windows Server 2003,大约是1500个左右的线程数就快到极限了(线程堆栈设定为1M),如果设定线程堆栈为2M,还达不到1500个线程总数;线程能够提高的总性能有限,而且线程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU

在开发中,最好是多进程和多线程结合,即根据实际的需要,每个CPU开启一个子进程,这个子进程开启多线程可以为若干同类型的数据进行处理。当然你也可以利用多线程+多CPU+轮询方式来解决问题。方法和手段是多样的,关键是自己看起来实现方便有能够满足要求,代价也合适。

一文讲解进程、线程、多进程、多线程的优缺点

【版权声明】叽叽歪歪吧提醒您:请在浏览本网站关于《多线程和多进程的区别(内存模型)》信息时,请您务必阅读并理解本声明。本站部分内容以及图片来源于商家投稿和网络转载,如网站发布的有关的信息侵犯到您的权益,请及时与我们取得联系,邮箱:20451 17252#qq。com,我们会尊重您的决定并当天作出删除处理。

(0)
上一篇 2022年2月27日 14:40:05
下一篇 2022年2月27日 15:00:05

相关推荐

  • 怎么设置电脑图标大小 电脑如何设置大图标查看

    怎么设置电脑图标大小(电脑如何设置大图标查看)今天有一个客户联系我说:自己的电脑也不知怎么了,桌面图标变得特别大,看着好别扭。确实,已经习惯了的桌面图标突然变大了,看着绝对不舒服。那么碰到这种情况怎么样去调小呢?今天龙飞就来给大家分享一下3

    2022年5月3日 生活小百科
    5
  • 摆地摊货源批发网 最火爆地摊货批发

    摆地摊货源批发网(最火爆地摊货批发)前几天刚结束的“两.会”, 有一个“旧词”重新映入人们眼前,那就是最近几天非常火爆的“地摊经济”,我看好多地方已经开始让摆地摊了,甚至有些地方的城管还主动邀请小贩出摊,搞得小贩还以为城管骗人。。。小编给你

    2022年4月20日
    7
  • 怎么查看老公删掉的微信聊天记录 老公清空聊天记录怎么找回

    怎么查看老公删掉的微信聊天记录(老公清空聊天记录怎么找回)说起来普遍被使用也已经好几年了,但是还有很多人不是那么了解的功能。今天就给大家分享8个隐藏功能,一键恢复聊天记录,不会用太可惜了!1、快速跳转至未读消息消息太多,一个一个找太麻烦了,

    2022年4月13日 生活小百科
    9
  • 怎么装电脑系统步骤 台式电脑一键重装系统

    怎么装电脑系统步骤(台式电脑一键重装系统)电脑重装系统教程,电脑开不了机,该怎么重装系统呢,今天给大家简单科普下,首先准备如下工具:一台已经完全开不开机的电脑,需要一个u盘大小8g或以上都可以有sd卡的同学们可以拿出自己的sd卡加上读卡器也

    2022年4月23日 生活小百科
    6
  • 经期能喝菊花茶吗 来月经喝菊花茶有影响吗

    经期能喝菊花茶吗(来月经喝菊花茶有影响吗)菊花茶的功效很多,但是处于经期的女性朋友能否喝菊花茶呢?由于菊花茶性寒,属寒凉型饮品,因此女性在月经期内最好不要喝菊花茶,不然会加重经期的不适,甚至会落下痛经的毛病。菊花茶性寒,经期不宜喝。女性经期

    2022年4月17日
    8
  • 大学生校园创业 大学生在校园里做

    大学生校园创业(大学生在校园里做)大学生在校期间也很多方面可以进行创业的呀,但是最主要是看你对哪方面感兴趣,就着重往那方面发展1.校园外卖校园外卖是当下大学生校园创业领域中的热门项目之一。随着大学生人群规模迅速的扩大增加,社会的进步,消费水

    2022年3月20日
    12
  • 鸭肉和什么相克不能一起吃 鸭肉和什么蔬菜搭配好

    鸭肉和什么相克不能一起吃(鸭肉和什么蔬菜搭配好)前言:大多数的宝贝自吃正餐开始,妈妈们就发现自家宝贝要么只爱吃肉不吃蔬菜,要么只爱吃蔬菜不爱吃肉,这样都容易造成宝贝由于饮食不均衡导致的营养不良。为解决妈妈们的困扰,我为大家整理出食材简单易备

    2022年5月8日 生活小百科
    3
  • 电脑如何恢复声音设置 电脑音频怎么重置

    电脑如何恢复声音设置(电脑音频怎么重置)方法1:首先检查计算机的声音程序。1.开始菜单>>控制面板2.控制面板>>硬件和声音3.硬件和声音>>声音4.声音>>调节系统音量。有时,我们无意间关闭了系统的音量。如果关闭了音量,则拉动音量栏以调节

    2022年5月1日 生活小百科
    7
  • 平安顺遂什么意思(平安顺遂可以祝福孩子吗)

    平安顺遂什么意思(平安顺遂可以祝福孩子吗)除夕,除旧迎新,平安顺遂,愿你所求都如愿,愿你所遇皆美好文/雨小荷(河南)除夕,一年一岁除旧年,一岁一年迎新春。除夕,除去旧年的沧桑与辛酸,缷下人生的负重与枷锁。于一朵璀璨的烟花中迎接新春的祥瑞!于

    2022年3月15日 生活小百科
    22
  • 深入理解es6 es6面试题

    深入理解es6(es6面试题)class 的写法只是语法糖,和之前 prototype 差不多,但还是有细微差别的,下面看看:1. 严格模式类和模块的内部,默认就是严格模式,所以不需要使用use strict指定运行模式。只要你的代码写在类

    2022年3月27日
    6

发表回复

登录后才能评论