多进程和多线程区别以及优缺点

news/2025/1/30 22:50:38/

多进程和多线程主要区别是:线程是进程的子集,一个进程可能由多个线程组成。多进程的数据是分开的、共享复杂,需要用IPC,但同步简单;多线程共享进程数据、共享简单,但同步复杂。

多进程,window应用程序中消息有两种送出途径:直接和排队。Windows或某些运行的应用程序可直接发布消息给窗口过程,消息可送到消息列象连续不断轮询消息列队的OS中当前执行的每个进程,事件驱动不是由事件的顺序来控制的,而是由事件的发生来控,而事件的发生是随机的、不确定的,这就允许程序的用户用各种合理的顺序来安排程序的流程。

多线程,是从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因硬件支持而能够在同一时间执行多于一个线程,从而提升整体处理性能。

一、多进程和多线程的区别是什么?

在Linux下编程多用多进程少用多线程编程。

多线程比多进程成本低,但性能更差。

二、多进程和多线程的优缺点分析

多进程优点:

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

2、通过增加CPU,就可以扩充性能;

3、可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;

4、每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大。

多进程缺点:

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

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

3、最好是多进程和多线程结合,即根据实际的需要,每个CPU开启一个子进程,这个子进程开启多线程可以为若干同类型的数据进行处理。当然你也可以利用多线程+多CPU+轮询方式来解决问题;

4、方法和手段的多样的,关键是自己看起来实现方便又能够满足要求,代价也合适。

多线程优势:

1、无需跨进程边界;

2、程序逻辑和控制方式简答;

3、所有线程可以直接共享内存和变量等;

4、线程方式消耗的总资源比进程方式好。

多线程缺点:

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

2、线程之间的同步和加锁控制比较麻烦;

3、一个线程的崩溃可能影响到整个程序的稳定性;

4、到达一定的线程数程度后,即使再增加CPU也无法提高性能,例如Windows Server 2003,大约是1500个左右的线程数就快到极限了(线程堆栈设定为1M),如果设定线程堆栈为2M,还达不到1500个线程总数;

5、线程能够提高的总性能有限,而且流程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU。

 


http://www.ppmy.cn/news/485708.html

相关文章

多线程和CPU的关系

什么是CPU (1) Central Progressing Unit 中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。 (2) CPU包括 运算器,高速缓冲存储器,总线…

多线程和cpu得关系

我看网上不少资料 当时看多线程文章的时候,看到一句话 叫 多线程下cpu也是一个一个执行的,当时一直不明白原因 后来查询好多资料 找到了 大多是转载 参考链接1 既然CPU同一时间只能执行一个线程,为什么存在并发问题 一点小疑惑终于解开啦 1…

面试中常被问到的(17)多线程及多进程优缺点

多进程: 优点: 进程资源相互独立,互不干扰,子程序崩溃不影响主程序的稳定性。进程比较稳定健壮通过增加cpu核心数,可以很容易扩充性能尽量减少线程加锁解锁的影响,极大提高性能每一个进程可以获得本地全…

线程也不是越多越好,多少是好?

前面我们评估了不同大小基因组构建索引所需的计算资源和时间资源和不同大小数据集比对所需的计算资源和时间资源。 下面我们进一步看下不同线程数的影响。 测试电脑配置 这是一个10核、20线程的处理器,主频2.8 G HZ,可超频到5.2 GhZ。在Windows系统上安装…

centos下的Nginx的安装

1.Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强。 其他服务器介绍:Apache服务器、Tomcat服务器、Lighttpd服务器 2.nginx依赖安装 yum -y instal…

chrome浏览器inspect打不开解决方案

chrome访问chrome://inspect/#devices后,点击inspect映射手机端webview页面定位元素,报错,空白展示。 解决方法:在edge浏览器里,输入chrome://inspect,跳转到edge://inspect页面,点击了inspect…

电脑连接WiFi 网页打不开 QQ可以登上去

1.打开IE浏览器 2.点击Internet选项 点击按钮 选择这里面的internet选项 3 点击连接 4 点击局域网设置 5 代理服务器下面 为LAN....... 取消勾选 然后按确认

safari浏览器找不到服务器怎么办,safari打不开网页因为服务器已停止响应解决方法...

safari打不开网页因为服务器已停止响应解决方法如下: 1、关闭手机或者苹果设备的wifi再打开了; 2、如果不行的话---设置--wifi一点击你的无线路由一选择忽视此网络一退回一重新查找wifi一输入wifi密码! 3、不要去调无线路由!不是它的问题;是手机上过太多的wifi&…