线程和进程的简单理解
首先来一句概括的总论:进程和线程都是一个时间段的描述,是CPU工作时间段的描述。
进程是计算机中的程序针对某数据集合进行的一次数据活动;进程是线程的容器,进程包含线程。
做个简单的比喻:进程=火车,线程=车厢。
线程要在进程之下才能进行(单独的车厢无法运行)。
一个进程可以包含多个线程(一辆火车可以有多个车厢)。
不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车)。
同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)。
进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)。
进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)。
进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上)。
进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存(比如火车上的洗手间)-“互斥锁”。
进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量”。
需要强调的是:同一个程序执行两次,那也是两个进程。比如打开爱奇艺,虽然都是同一软件,但是一个可以看喜羊羊,一个可以看七龙珠。
作者:知乎用户
链接:https://www.zhihu.com/question/25532384/answer/411179772
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
线程和进程的简单理解相关推荐
- linux 线程与进程的简单区别
一.进程与线程的区别 一个进程至少包含一个线程,线程可以在同一时刻做不止一件事情:进程是线程的容器,里面可以包含很多个线程. 进程:是资源分配的最小单位 线程:是程序执行的最小单位 区别一: 进程:父 ...
- python中线程和进程_python中线程和进程的简单了解
一.操作系统.应用程序 1.硬件:硬盘.cpu.主板.显卡........ 2.装系统(本身也是一个软件): 系统就是一个由程序员写出来的软件,该软件用于控制计算机得硬盘,让他们之间进行互相配合. 3 ...
- [操作系统] 线程和进程的简单解释
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 1. 计算机的核心是CPU,它 ...
- python线程和进程-未完待续
python线程和进程-未完待续 环境变量 0. 概念 1. 并行/并发 并行 并发 并行与并发的关系 2.进程/线程 基本概念 线程 多线程 队列 互斥锁/线程共享 阻塞 锁 条件锁 进程 多进程 ...
- 探究线程与进程的区别这一问题
进程和线程基础(理论概念) 1. 定义 看了下面的定义,可能会有点晕,但我还是要把他写下来(为了严谨). 进程是资源(CPU.内存等)分配的基本单位,具有一定独立功能的程序关于某个数据集合上的一次运行 ...
- CPU核心数线程数、程序进程线程、并发并行的简单理解
CPU核心数线程数.程序进程线程.并发并行.简单理解和区分 这篇文章是对上述感念的简单理解,想深入研究可以看看<计算机组成原理> CPU的核心数 线程数 当我们买电脑的时候,会看到CPU的 ...
- 多CPU,多核,多进程,多线程以及进程和线程的简单理解以及区别
当面临这些问题的时候,有两个关键词无法绕开,那就是并行和并发. 首先,要先了解几个概念: 1.进程是程序的一次执行. 2.进程是资源分配的基本单位. 3.一个进程可以包括多个线程. 4.在单CPU计算 ...
- iOS开发 - 线程与进程的认识与理解
进程: 进程是指在系统中正在运行的一个应用程序,比如同时打开微信和Xcode,系统会分别启动2个进程; 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内; 线程: 一个进程要想执行任务 ...
- 对线程与进程的区别以及对多线程并发的理解
一.线程与进程的区别 先简单说说线程与进程的概念: (1)进程是指一个内存中运行的应用程序,比如在Windows系统中,一个运行的exe就是一个进程. (2)线程是指进程中的一个执行流程. 区别: 一 ...
最新文章
- python常用命令大全-Python常用命令之集合
- c# winform实现2048游戏
- windows配置xhprof,PHP性能分析工具
- 【防衰老教程】记录一次IDEA,开发JavaWeb项目时JS中文乱码排错
- 移动app测试之怎么避免bug漏测
- 摆脱困境:将环境特定的Cron表达式与@Scheduled批注一起使用
- 基于MQTT协议进行应用开发
- adafruit1306_Adafruit的2015年最佳开源可穿戴设备
- windows 开启mysql日志记录_Windows下MySQL开启历史记录
- 一个 TypeScript keyof 泛型用法
- sql Sever的存储过程如何转换为mysql
- 小程序开发,不现实用户的头像!
- css的写法 有点凌乱(养成这习惯 神马浏览器兼容都是浮云 so easy)
- 2019 GNU Tools Cauldron 参会观感
- webrtc-sdp编码信息协商
- iOS App添加Spotlight搜索(附Swift Demo)
- android蓝牙hid 鼠标,BLE HID协议-----蓝牙鼠标代码流分析
- 工程化框架之feather
- Android 抛弃原生MediaPlayer 使用音频框架 StarrySky
- Eclipse+Java+Swing+Mysql实现员工工资管理系统