我是靠谱客的博主 魁梧唇彩,最近开发中收集的这篇文章主要介绍面试中常被问到的(17)多线程及多进程优缺点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 多进程:

优点:

  1. 进程资源相互独立,互不干扰,子程序崩溃不影响主程序的稳定性。进程比较稳定健壮
  2. 通过增加cpu核心数,可以很容易扩充性能
  3. 尽量减少线程加锁解锁的影响,极大提高性能
  4. 每一个进程可以获得本地全部地址空间和相关资源,性能上限很大

缺点:

  1. 逻辑控制复杂,需要与主程序进行交互
  2. 需要跨进程边界,对大量数据传输不友好,适合小数据量传输,密集运算会导致调度开销增大
  3. 单cpu轮询并发处理,多cpu并行处理
  4. 多线程与多进程结合,每一个cpu开启一个子进程,每一个子进程开启若干同类型数据进行处理。
  • 多线程:

优点:

  1. 无需跨进程边界进行数据传输,通信更便捷(包含进程间通信方式在内的以及全局变量,函数传参)
  2. 程序逻辑和控制方式简单
  3. 所有线程直接共享同一内存地址空间和资源
  4. 线程总资源消耗比线程少(创建销毁成本低,调度成本低)

缺点:

  1. 每个线程与主程序共用地址空间,受限于本地内存空间大小
  2. 线程之间由于共享同一资源,对于资源访问必须需要加锁控制,线程间同步和加锁控制操作麻烦
  3. 一个线程的崩溃可能影响整个程序的稳定性
  4. 线程不是越多越好,cpu资源固定,线程数过多会增加线程切换调度成本

总结:

多进程的优势在于cpu核心数,及资源数量,适用于cpu密集型工作环境

多线程的优势在于切换代价小,适用于IO密集型工作环境涉及频繁IO阻塞导致的线程切换

最后

以上就是魁梧唇彩为你收集整理的面试中常被问到的(17)多线程及多进程优缺点的全部内容,希望文章能够帮你解决面试中常被问到的(17)多线程及多进程优缺点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部