您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

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

时间:2019-04-22 10:20:35  来源:  作者:
一. 在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+轮询方式来解决问题。方法和手段是多样的,关键是自己看起来实现方便有能够满足要求,代价也合适。
 


Tags:   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Create 2024百度AI开发者大会:李彦宏带来三大AI开发工具,让人人都是开发者
“未来,自然语言将成为新的通用编程语言,你只要会说话,就可以成为一名开发者,用自己的创造力改变世界。”4月16日,Create 2024百度AI开发者大会在深圳举办。百度创始人、董事长兼...【详细内容】
2024-04-17  Search:   点击:(2)  评论:(0)  加入收藏
“刘强东”当主播,扶得起京东直播吗?
定焦(dingjiaoone)原创作者 | 苏琦编辑 | 金玙璠“东哥呢,在哪里?”4月16日下午6点18分,刘强东的数字人形象“采销东哥”开启“直播首秀”,同时亮相京东家电家居、京东超市采销直...【详细内容】
2024-04-17  Search:   点击:(2)  评论:(0)  加入收藏
AI圈公开的秘密:天下模型一大抄
抄袭已经成为AI世界公开的秘密。据The Information周一的文章,许多初创公司的AI聊天机器人很可能是采用了OpenAI和其他公司的数据开发的。这些机器人在某些任务上可以媲美GPT...【详细内容】
2024-04-17  Search:   点击:(4)  评论:(0)  加入收藏
聚焦“一房二卖”等问题 最高检发布典型案例
记者4月16日从最高人民检察院获悉,最高检近日印发了6件涉房地产纠纷民事检察监督典型案例,聚焦“一房二卖”、逾期办理产权证、违约金调整等高发监督事项。“一房二卖”等违法...【详细内容】
2024-04-17  Search:   点击:(2)  评论:(0)  加入收藏
今年买二手房最划算?70城二手房价格全都降了!
国家统计局4月16日公布的数据显示,2024年一季度,全国房地产开发投资同比下降9.5%。从销售来看,一季度,销售面积同比下降19.4%;新建商品房销售额下降27.6%。国家统计局城市司首席...【详细内容】
2024-04-17  Search:   点击:(1)  评论:(0)  加入收藏
周鸿祎力挺手机支架 喊话余承东:手机在老婆手里 你能专心开车吗
快科技4月17日消息,360周鸿祎近日再次提及了雷军和余承东引发的关于手机支架的讨论,强调了手机支架与驾驶安全之间的关联。周鸿祎认为,余承东在智界S7发布会上对手机支架的讽刺...【详细内容】
2024-04-17  Search:   点击:(1)  评论:(0)  加入收藏
Android 15 有望引入应用隔离功能,进一步提升系统安全性
IT之家 4 月 17 日消息,即将推出的 Android 15 系统可能引入一项全新功能:应用隔离。这一功能将更好地保护用户免受行为异常应用的侵害。Android 系统一直拥有强大的安全防护...【详细内容】
2024-04-17  Search:   点击:(4)  评论:(0)  加入收藏
全球首个AI程序员Devin造假?业内人士:质疑有理,但程序员已离不开AI
·号称全球首个AI人工智能软件师Devin日前被网络博主质疑造假、炒作。业内人士分析认为,该位博主质疑有理有据,Devin的“惊人效果”确实存在一些商业炒作的嫌疑。号称“...【详细内容】
2024-04-17  Search:   点击:(2)  评论:(0)  加入收藏
“刘强东”直播首秀,释放了什么信号?
文|新浪科技 原祎鸣“3!2!1!上链接!”昨晚,刘强东AI数字人(以下简称“刘强东”)完成了首秀。虽然此前已有不少明星、头部主播的“分身”活跃在直播间中,技术制造的“替代者”已不算...【详细内容】
2024-04-17  Search:   点击:(2)  评论:(0)  加入收藏
A股突发!美联储传来大消息
全球市场动荡的根源其实还在于美元!最近,全球股债基本处于双杀状态,昨天A股亦是惨烈。在这种市场情绪背后,有人错误将之归咎于资本市场新规,其实根源在于美元,因为全球主要资产几...【详细内容】
2024-04-17  Search:   点击:(2)  评论:(0)  加入收藏
▌简易百科推荐
Meta如何将缓存一致性提高到99.99999999%
介绍缓存是一种强大的技术,广泛应用于计算机系统的各个方面,从硬件缓存到操作系统、网络浏览器,尤其是后端开发。对于Meta这样的公司来说,缓存尤为重要,因为它有助于减少延迟、扩...【详细内容】
2024-04-15    dbaplus社群  Tags:Meta   点击:(1)  评论:(0)  加入收藏
SELECT COUNT(*) 会造成全表扫描?回去等通知吧
前言SELECT COUNT(*)会不会导致全表扫描引起慢查询呢?SELECT COUNT(*) FROM SomeTable网上有一种说法,针对无 where_clause 的 COUNT(*),MySQL 是有优化的,优化器会选择成本最小...【详细内容】
2024-04-11  dbaplus社群    Tags:SELECT   点击:(1)  评论:(0)  加入收藏
10年架构师感悟:从问题出发,而非技术
这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家...【详细内容】
2024-04-11  dbaplus社群    Tags:架构师   点击:(2)  评论:(0)  加入收藏
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(5)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(9)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(16)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(13)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(9)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(14)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(10)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条