面试中常被问到的(17)多线程及多进程优缺点
Posted AllenSquirrel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试中常被问到的(17)多线程及多进程优缺点相关的知识,希望对你有一定的参考价值。
-
多进程:
优点:
- 进程资源相互独立,互不干扰,子程序崩溃不影响主程序的稳定性。进程比较稳定健壮
- 通过增加cpu核心数,可以很容易扩充性能
- 尽量减少线程加锁解锁的影响,极大提高性能
- 每一个进程可以获得本地全部地址空间和相关资源,性能上限很大
缺点:
- 逻辑控制复杂,需要与主程序进行交互
- 需要跨进程边界,对大量数据传输不友好,适合小数据量传输,密集运算会导致调度开销增大
- 单cpu轮询并发处理,多cpu并行处理
- 多线程与多进程结合,每一个cpu开启一个子进程,每一个子进程开启若干同类型数据进行处理。
-
多线程:
优点:
- 无需跨进程边界进行数据传输,通信更便捷(包含进程间通信方式在内的以及全局变量,函数传参)
- 程序逻辑和控制方式简单
- 所有线程直接共享同一内存地址空间和资源
- 线程总资源消耗比线程少(创建销毁成本低,调度成本低)
缺点:
- 每个线程与主程序共用地址空间,受限于本地内存空间大小
- 线程之间由于共享同一资源,对于资源访问必须需要加锁控制,线程间同步和加锁控制操作麻烦
- 一个线程的崩溃可能影响整个程序的稳定性
- 线程不是越多越好,cpu资源固定,线程数过多会增加线程切换调度成本
总结:
多进程的优势在于cpu核心数,及资源数量,适用于cpu密集型工作环境
多线程的优势在于切换代价小,适用于IO密集型工作环境涉及频繁IO阻塞导致的线程切换
以上是关于面试中常被问到的(17)多线程及多进程优缺点的主要内容,如果未能解决你的问题,请参考以下文章