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

  • 多进程:

优点:

  1. 进程资源相互独立,互不干扰,子程序崩溃不影响主程序的稳定性。进程比较稳定健壮
  2. 通过增加cpu核心数,可以很容易扩充性能
  3. 尽量减少线程加锁解锁的影响,极大提高性能
  4. 每一个进程可以获得本地全部地址空间和相关资源,性能上限很大

缺点:

  1. 逻辑控制复杂,需要与主程序进行交互
  2. 需要跨进程边界,对大量数据传输不友好,适合小数据量传输,密集运算会导致调度开销增大
  3. 单cpu轮询并发处理,多cpu并行处理
  4. 多线程与多进程结合,每一个cpu开启一个子进程,每一个子进程开启若干同类型数据进行处理。
  • 多线程:

优点:

  1. 无需跨进程边界进行数据传输,通信更便捷(包含进程间通信方式在内的以及全局变量,函数传参)
  2. 程序逻辑和控制方式简单
  3. 所有线程直接共享同一内存地址空间和资源
  4. 线程总资源消耗比线程少(创建销毁成本低,调度成本低)

缺点:

  1. 每个线程与主程序共用地址空间,受限于本地内存空间大小
  2. 线程之间由于共享同一资源,对于资源访问必须需要加锁控制,线程间同步和加锁控制操作麻烦
  3. 一个线程的崩溃可能影响整个程序的稳定性
  4. 线程不是越多越好,cpu资源固定,线程数过多会增加线程切换调度成本

总结:

多进程的优势在于cpu核心数,及资源数量,适用于cpu密集型工作环境

多线程的优势在于切换代价小,适用于IO密集型工作环境涉及频繁IO阻塞导致的线程切换

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HT . WANG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值