【线程】多线程多进程的区别与选择

对比

  • 数据共享与同步方面
    • 多进程数据共享复杂,需要用IPC(进程间通讯)
      数据是分开的,同步简单
    • 多线程因为共享进程数据,数据共享简单,但是也因为这个问题导致同步复杂
  • 内存、CPU
    • 多进程占用内存多,切换复杂,CPU利用率低
    • 多线程占用内存少,切换简单,CPU利用率高
  • 创建销毁切换
    • 多进程创建销毁切换复杂,速度慢
    • 多线程创建销毁切换简单,速度快
  • 编程调试
    • 多进程编程简单,调试简单
    • 多线程编程复杂,调试复杂
  • 可靠性
    • 多进程进程间不会相互影响
    • 多线程一个线程挂掉将导致整个进程挂掉
  • 分布式
    • 多进程适用于多核、多机分布式,如果一台机器不够,扩展到多台机器比较简单
    • 多线程适用于多核分布式

具体实践

  • 需要频繁创建销毁优先用线程
  • 需要进行大量计算的用线程
    大量计算需要消耗很多CPU资源,切换频繁,这种情况下线程最合适
  • 强相关处理用线程,弱相关处理用进程

一般的Server需要完成如下任务:消息收发、消息处理。“消息收发”和“消息处理”就是弱相关的任务,而“消息处理”里面可能又分为“消息解码”、“业务处理”,这两个任务相对来说相关性就要强多了。因此“消息收发”和“消息处理”可以分进程设计,“消息解码”、“业务处理”可以分线程设计。

  • 可能要扩展到多机分布的用进程,多核分布用线程

参考文章
多进程多线程的区别和选择(总结)
多线程还是多进程的选择及区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值