linux中多进程和多线程的区别有什么
发布时间:2023-10-13 11:28:43 所属栏目:Linux 来源:
导读: 这篇“linux中多进程和多线程的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们
这篇“linux中多进程和多线程的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“linux中多进程和多线程的区别有哪些”文章吧。 linux中多进程和多线程的区别 进程:运行中的程序。-->执行过程称之为进程。 线程:线程是轻量级的进程,是进程中的一条执行序列,一个进程至少有一条线程。 main函数所代表的执行序列称之为主线程。通过特定的线程库实例化创建的线程可以被称之为指向函数实例化的线程。 因为共享进程数据,共享数据简单,同时导致同步也复杂 各有优势。 内存、CPU 占用内存多,切换复杂,速度慢,CPU利用率低 占用内存少,切换简单CPU利用率高 多线程优势。 创建销毁、切换 创建销毁,切换复杂,速度慢 创建销毁,切换简单,速度很快 多线程优势。 编程调试 编程简单,调试简单 编程复杂,调试复杂 多进程优势。 可靠性 进程间不会互相影响 一个线程挂掉将导致整个进程挂掉 多进程优势。 分布式 适用于多核、多机分布式;如果一台机器不够,拓展到多台机器比较简单 适用于多核分布式 多进程优势。 多线程的优点: 无需跨进程边界; 程序逻辑和控制方式简单; 所有线程可以直接共享内存和变量; 线程方式消耗的总资源比进程少; 每个进程相互独立,不影响主程序的稳定性,子进程崩溃没关系; 通过增加CPU就可以容易扩充性能; 可以尽量减少线程加锁/解锁的影响,极大提高性能; 多线程的缺点: 每条线程与主程序共用地址空间,大小受限; 线程之间的同步和加锁比较麻烦; 一个线程的崩溃可能影响到整个程序的稳定性; 到达一定的线程数后,即使再增加CPU也无法提高性能; 逻辑控制复杂,需要和主程序交互; 需要跨进程边界,如果有大数据传输,不适合; 多进程调度开销比较大; 应用情况如下: 1)需要频繁创建销毁的用线程 这种原则最常见的就是Web服务器了,来一个连接建立一个线程,断了就销毁线程。如果用进程,创建销毁的代价是很难承受的。 2)需要进行大量计算的优先用线程 所谓大量计算就是消耗很多CPU,切换频繁,这种情况下线程是最合适的。 3)强相关的处理用线程,弱相关的处理用进程 什么叫强相关、弱相关?理论上很难定义,举一个例子加以解释。 4)可能扩展到多机分布的用进程,多核分布的用线程 消耗资源: 从内核的观点看,进程的目的就是担任分配系统资源的基本单位。线程是进程的一条执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。 线程,他们之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且线程间彼此切换所需要的时间也远远小于进程间切换所用的时间。 通讯方式: 远程传递数据只能通过通讯的方式,既费时又不方便。线程时间数据大部分共享,快捷方便,但是数据同步需要锁。 线程自身优势: 提高应用程序响应;使用CPU系统更加有效;操作系统会保证当线程数目不大于CPU数目的时候,不同的线程运行在不同的CPU上;改善程序结构,一个即长又复杂的进程可以考虑分为多个线程,应该能够成为机器人的几个独立或者甚至于半独立的部分,这样的程序应该是会相对比较易于理解和修改。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐