多线程VS多进程

  1. 多线程:
    (1)优点:
    无需跨进程边界;
    程序逻辑和控制方式简单;
    所有线程可以直接共享内存和变量,启动一个线程比启动一个进程快等;
    线程方式消耗的总资源比进程方式好;
    线程之间切换比进程之间切换 时间一般要短;
    (2)缺点:
    每个线程与主程序共用地址空间,受限于2GB地址空间;
    调度时, 要保存线程状态,频繁调度, 需要占用大量的机时;
    一个线程的崩溃可能影响到整个程序的稳定性;
    程序设计上容易出错,加锁解锁控制麻烦(线程同步问题);
    线程能够提高的总性能有限,线程多了之后,线程本身的调度麻烦,需要消耗较多的CPU
  2. 多进程
    (1)优点:
    每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大
    每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;
    通过增加CPU,就可以容易扩充性能;
    可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;
    (2)缺点:
    操作系统调度切换多个线程要比切换调度进程在速度上快的多。而且进程间内存无法共享,通讯也比较麻烦。
    线程之间由于共享进程内存空间,所以交换数据非常方便;在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

总结起来就几方面:内存是否共享,是否跨进程边界,是否加锁解锁,调度切换时所需时间,影响主程序的稳定性;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值