面试中常被问到的(17)多线程及多进程优缺点
多进程:
优点:
- 进程资源相互独立,互不干扰,子程序崩溃不影响主程序的稳定性。进程比较稳定健壮
- 通过增加cpu核心数,可以很容易扩充性能
- 尽量减少线程加锁解锁的影响,极大提高性能
- 每一个进程可以获得本地全部地址空间和相关资源,性能上限很大
缺点:
- 逻辑控制复杂,需要与主程序进行交互
- 需要跨进程边界,对大量数据传输不友好,适合小数据量传输,密集运算会导致调度开销增大
- 单cpu轮询并发处理,多cpu并行处理
- 多线程与多进程结合,每一个cpu开启一个子进程,每一个子进程开启若干同类型数据进行处理。
多线程:
优点:
- 无需跨进程边界进行数据传输,通信更便捷(包含进程间通信方式在内的以及全局变量,函数传参)
- 程序逻辑和控制方式简单
- 所有线程直接共享同一内存地址空间和资源
- 线程总资源消耗比线程少(创建销毁成本低,调度成本低)
缺点:
- 每个线程与主程序共用地址空间,受限于本地内存空间大小
- 线程之间由于共享同一资源,对于资源访问必须需要加锁控制,线程间同步和加锁控制操作麻烦
- 一个线程的崩溃可能影响整个程序的稳定性
- 线程不是越多越好,cpu资源固定,线程数过多会增加线程切换调度成本
总结:
多进程的优势在于cpu核心数,及资源数量,适用于cpu密集型工作环境
多线程的优势在于切换代价小,适用于IO密集型工作环境涉及频繁IO阻塞导致的线程切换
面试中常被问到的(17)多线程及多进程优缺点相关推荐
- Python培训常识:Python面试中常被问到的几种设计模式要知道
学习Python技术大家都是为了日后能够找到适合自己的工作岗位,那么除了要学习好Python技术外,对于面试环节的问题也要有所了解,本期小编为大家介绍的Python培训教程就算关于Python面试中常 ...
- 面试中常被问到(11)虚函数/纯虚函数
虚函数 如何定义一个虚函数?在基类成员函数前加入virtual关键字,但并不代表此函数不被实现,只是说明允许基类指针调用派生类重写的此函数 一个类只要声明有虚函数或者从基类继承了虚函数,在编译过程中就 ...
- e - 数据结构实验之查找五:平方之哈希表_面试中常被问到的Hash表,你了解吗
#新人扶持计划# Hash表在面试中经常被问到,今天我们来了解下. Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组.链表以及二叉排序树等相比较有很明显的区别,它能够 ...
- 面试中常被问到(五)C++析构函数,虚析构函数
C++析构函数 (1)对于析构函数:析构函数与构造函数相呼应,从调用构造函数开始到自动执行析构函数二者调用期间即为所创建对象实例的生命周期. (2)析构函数与类名相同,仅前面加一个~,一般析构函数无参 ...
- php面试中常被问到的问题--欢迎留言补充
2019独角兽企业重金招聘Python工程师标准>>> 整理自己的项目 -- 问到的概率大 问项目的具体内容,遇到的挑战,具体解决办法. 为什么使用独立文件服务器?1,从服务器本身来 ...
- Linux运维面试中常被问到的两个shell脚本
脚本一: 在公司里有一个网段是 192.168.3.0的网段,现在想判断一下哪些主机在线,哪些主机不在线. shell脚本解决方案: 方法一: 思路 首先要循环目标主机的IP地址,IP地址分为两部分: ...
- 面试:整理面试中常被问到的8种数据结构
数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作.数据结构在计算机科学和软件工程领域具有广泛而多样的用途. 几乎所有已开发的程序或软件系统都使用数据结构.此外,数据 ...
- 面试中常被问到的(21)TCP/UDP如何保持可靠性
Tcp保持可靠性从以下三个方面描述: 1,可靠传输:面向连接,包序管理,确认应答,超时重传,校验和 2,避免丢包:滑动窗口流量控制,拥塞机制(慢启动快增长) 3,提高性能:确认序号快速重传,延迟应答, ...
- 面试中常被问到(26)菱形继承及解决方法
菱形继承 菱形继承属于多继承中一种具有代表性的继承关系,产生数据冗余和数据二义性问题 class A { public:int a; };class B : public A { public:int ...
最新文章
- 《构建之法》问题与思考
- QJson生成文件和解析文件
- RF无线电射频接口静电保护方案图
- Exceptions(小节)
- iOS 常用公共方法
- JMeter测试实例
- Dubbo 服务 IP 注册错误踩坑经历
- Java项目—在线考试系统
- 计算机的基本数据结构与算法分析,数据结构与算法分析
- Linux中Tomcat的安装及配置
- Excel金额大小写转换公式
- 华为网络设备-构建简单IPv6网络实验
- otsu阈值分割算法原理_OTSU阈值分割
- 嵌入式系统开发-麦子学院(12)——ARM Bootloader开发
- 知我者,谓我心忧,不知我者,谓我何求。何必说?
- 武汉大花岭科目二考试说明
- 四款功能强大的优质app合集,总有一个能给你带来帮助!
- 师兄写的一个JAVA播放器的源代码(转)
- sql查询语句,在表中的一个字段的部分数据中查看其他字段
- 万里长征之测试第一步