我来分享多进程和多线程的区别是什么

进程多线程的区别是什么?此前小编给大家介绍了进程和线程的区别,那么大家知道多进程和多线程的区别又是什么吗?它们分别有什么优缺点?为了解决大家的疑惑,小编特地为大家整理了以下教程,希望对大家有所帮助。

多进程和多线程的区别是什么?多进程和多线程的优缺点分析

前言:

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

多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。[1] 在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(台湾译作“执行绪”),进而提升整体处理性能。

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

在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、通过增加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。

关于多进程和多线程的区别就给大家介绍到这里了,还蒙在鼓里的伙伴,赶紧看看以上教程吧!相信你会有所收获!

本文来自网络投稿,来自作者春天。不代表酷牛教程立场,如若转载,请注明出处:https://www.xukn.com/369680.html

(0)
春天春天
上一篇 2023-06-19 17:44
下一篇 2023-06-19 17:45

相关推荐

  • 小编教你Win7系统中smss.exe是什么进程。

    我们在Win7电脑上打开任务管理器,会在里面看到smss.exe进程,不知道smss.exe是什么进程,能不能结束它。最近有用户想要结束这个进程,然后就提示操作系统立即被关闭,所以...

    2023-06-14
    0150
  • 分享WinXP系统如何关闭Softmanager进程。

    最近有WinXP系统用户反映,在任务管理器里面发现一个陌生的进程softmanager.exe,它占用的内存很高,用户想要关闭它,又不知道它是什么,关闭它又会不会有什么影响,用户为...

    2023-06-16 PC教程
    0180
  • 小编分享如何结束进程树。

    如何结束进程树?如果我们在桌面上开启了多个相同应用程序窗口,就会在任务栏出现多个栏目,如果需要一次性关闭所有同应用程序窗口,则可以使用一条命令实现,其实就是结束进程树,具体请看下文...

    2023-06-16 PC教程
    0160
  • 小编分享userinit.exe是什么进程

    userinit.exe是什么进程?userinit.exe出现异常怎么办?userinit.exe是一个用于管理程序启动顺序的进程,系统刚启动时会在任务管理器看到该进程,等各项加...

    2023-06-19
    0170
  • 小编分享如何隐藏进程不被检测

    如何隐藏进程不被检测?如果有人使用的你的电脑,而你又不想被他人知道你在运行什么程序,仅仅把图标隐藏是远远不够的,因为在进程中依然可以看到你当前运行的程序,那么要如何隐藏进程呢?进程...

    2023-06-19
    0160
  • 我来分享Win10关闭ThunderPlatform进程的方法。

    ThunderPlatform是迅雷的进程,往往占据了较高的系统内存和网速,所以很多Win10用户想知道是否可以关闭ThunderPlatform进程,其实这个进程是可以关闭的,下...

    2023-06-14 PC教程
    0160
  • 分享360leakfixer.exe是什么进程

    最近有用户反映,电脑开机后很经常会出现一个360leakfixer.exe损坏提示,用户并不知道这个360leakfixer.exe是什么,为此非常苦恼。其实,360leakfix...

    2023-06-30
    0190
  • 我来分享lexpps.exe是什么进程

    单单看lexpps.exe进程很多小伙伴可能不熟悉,但是一说到电脑关机前的提示,想必不少人曾经都遇到过每次电脑关机都会提示lexpps.exe程序错误。遇到这种情况我们该怎么办?今...

    2023-07-12
    0180
  • 小编教你mmc.exe是什么进程

    mmc.exe是什么进程?mmc.exe进程需要禁用吗?很多用户会在任务管理器发现mmc.exe进程,觉得该进程占用的内存还挺高的,所以在想能不能禁用mmc.exe进程?面对此用户...

    2023-06-19
    0270
  • 分享Win10系统下Runtimebroker.exe进程占用CPU过高怎么办。

    Win10系统下Runtimebroker.exe进程占用CPU过高怎么办?一位用户在使用Win10电脑的过程中,突然发现一个名为“Runtimebroker.exe&...

    2023-06-17 PC教程
    0170
  • 小编教你msiexec.exe是什么进程。

    msiexec.exe是什么进程?其实msiexec.exe是系统的程序文件,主要用于给Windows安装新程序。当我们使用Update安装更新或安装一些软件时,msiexec.e...

    2023-06-17 PC教程
    0140
  • 分享进程和线程的区别是什么

    进程和线程的区别是什么?有什么关系?相信大家对于进程都很熟悉了吧,而线程相对于进程而言,是一个更加接近于执行体的概念,为了让大家更好的了解进程和线程,下面给大家介绍进程和线程的区别...

    2023-06-18
    0160
  • 我来教你srvany.exe是什么进程

    srvany.exe是什么进程?srvany.exe进程可以关闭吗?一些伙伴在操作Windows系统的过程中,会发现srvany.exe进程,其实srvany.exe是Window...

    2023-06-19
    0160
  • 小编分享Win7系统dllhost.exe进程占用大量内存空间怎么办。

    当电脑运行速度变慢的时候,极有可能是某个进程占用了大量的内存空间,不过打开任务管理器却会发现,有些进程我们根本无法辨别到底是什么进程,比如dllhost.exe就是其中之一。dll...

    2023-06-15
    0200
  • 小编分享Win10系统如何彻底关闭teniodl.exe进程。

    在下载安装腾讯旗下游戏的时候,系统后台就会悄悄的运行一个名为“teniodl.exe”的进程,它是腾讯游戏的一个下载进程,会占用非常大的流量,它也是我们经常...

    2023-06-15 PC教程
    0190

发表回复

登录后才能评论