概述
-
多进程:
优点:
- 进程资源相互独立,互不干扰,子程序崩溃不影响主程序的稳定性。进程比较稳定健壮
- 通过增加cpu核心数,可以很容易扩充性能
- 尽量减少线程加锁解锁的影响,极大提高性能
- 每一个进程可以获得本地全部地址空间和相关资源,性能上限很大
缺点:
- 逻辑控制复杂,需要与主程序进行交互
- 需要跨进程边界,对大量数据传输不友好,适合小数据量传输,密集运算会导致调度开销增大
- 单cpu轮询并发处理,多cpu并行处理
- 多线程与多进程结合,每一个cpu开启一个子进程,每一个子进程开启若干同类型数据进行处理。
-
多线程:
优点:
- 无需跨进程边界进行数据传输,通信更便捷(包含进程间通信方式在内的以及全局变量,函数传参)
- 程序逻辑和控制方式简单
- 所有线程直接共享同一内存地址空间和资源
- 线程总资源消耗比线程少(创建销毁成本低,调度成本低)
缺点:
- 每个线程与主程序共用地址空间,受限于本地内存空间大小
- 线程之间由于共享同一资源,对于资源访问必须需要加锁控制,线程间同步和加锁控制操作麻烦
- 一个线程的崩溃可能影响整个程序的稳定性
- 线程不是越多越好,cpu资源固定,线程数过多会增加线程切换调度成本
总结:
多进程的优势在于cpu核心数,及资源数量,适用于cpu密集型工作环境
多线程的优势在于切换代价小,适用于IO密集型工作环境涉及频繁IO阻塞导致的线程切换
最后
以上就是魁梧唇彩为你收集整理的面试中常被问到的(17)多线程及多进程优缺点的全部内容,希望文章能够帮你解决面试中常被问到的(17)多线程及多进程优缺点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复