进程和线程、多进程和多线程

参考文献:https://blog.csdn.net/linraise/article/details/12979473

进程和线程的区别

概念区别:进程是系统资源分配的最小单元。线程是CPU调度和执行的最小单元,在每个时间片中只有一个线程执行。线程又被称为轻量级进程。

包含关系:一个进程可以由很多个线程组成,且至少有一个主线程,其他是子线程,线程依附于进程。

内存分配、开销:进程有自己独立的地址空间,线程使用和进程相同的地址空间,共享进程所有的资源,每个线程也有自己的堆栈和局部变量,因此CPU切换线程的代价比切换进程小很多,同时创建线程的开销也小很多。

通信:线程间通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程间需要进程间通信IPC。

健壮性:多进程更健壮,进程间相互独立,所有进程间的crash不会相互影响。

多进程和多线程区别

多进程多线程
数据共享、同步数据相互独立;共享复杂,需要IPC;同步简单多线程共享进程数据;共享简单;同步复杂;
内存、CPU占用内存多,切换复杂、CPU利用率低;占用内存少,切换简单、CPU利用率高;
创建、销毁、切换复杂,速度慢简单,速度快
可靠性进程间不会相互影响一个线程crash会导致整个进程挂掉
分布式应用于多核、多机分布;扩展到多台机器比较简单;应用于多核分布;
编程、调试简单复杂
多进程多线程
优点内存隔离,单个进程的异常不会导致整个应用的崩溃提高系统的并行性,并且开销小
缺点进程间调用,通信和切换的开销大没有内存隔离,单个线程的崩坏会导致整个进程的崩溃,发生bug时,定位不方便
使用目标子功能之间交互少存在大量IO,网络等耗时操作,或者需要和用户交互时,使用多线程有利于提高系统的并行性

如何选用多进程、多线程?

  • 需要频繁创建和销毁,优先使用线程。
  • 需要大量计算,优先使用线程。
  • 强相关的处理使用线程,弱相关的处理使用进程。
  • 可能扩展到多机分布使用进程,多核分布使用线程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值