Linux 多线程与多进程的优缺点

多进程与多线程处理任务:

如果需要进行多任务处理,有两种方法:一种是多线程,一种是多进程。
在这里插入图片描述

线程优点:
  • 线程间的通信更加灵活:线程间共用同一虚拟地址,共享数据段,只要知道虚拟地址就可以访问数据。线程间的通信方式包含进程间通信方式(管道、共享内存、消息队列、信号量)在内还可以使用全局变量以及函数传参实现通信。
  • 线程的创建与销毁成本更低:创建线程只需要创建pcb,然后建立映射关系
  • 线程间的调度成本低:共用同一页表,调度时不用切换页表等
    注意:
     一个线程崩溃,进程退出,释放进程资源,所有线程退出。
     线程不是越多越好,cpu资源固定,线程多了反而会增加线程间的切换调度成本
进程优点:
  • 稳定性高、健壮性强:各个进程之间是相互独立的,如果一个进程崩溃,不会影响其他进程的运行。适用于对于主程序安全性要求更高的场景,例如:shell、网络服务器

多线程的优点就是多进程的缺点,多进程的优点就是多线程的缺点。

线程与进程的应用场景不同,在合适的场景选取合适的方法。

多任务处理场景:
  • CPU密集型程序:程序中进行大量数据运算,对cpu资源要求高。可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,CPU密集型任务同时进行的数量应当等于CPU的核心数。
  • IO密集型程序:程序中进行大量IO操作,对cpu资源要求并不高。任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值