首先来一句概括的总论:进程和线程都是一个时间段的描述,是CPU工作时间段的描述。
进程是计算机中的程序针对某数据集合进行的一次数据活动;进程是线程的容器,进程包含线程。

做个简单的比喻:进程=火车,线程=车厢。
线程要在进程之下才能进行(单独的车厢无法运行)。
一个进程可以包含多个线程(一辆火车可以有多个车厢)。
不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车)。
同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)。
进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)。
进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)。
进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上)。
进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存(比如火车上的洗手间)-“互斥锁”。
进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量”。

需要强调的是:同一个程序执行两次,那也是两个进程。比如打开爱奇艺,虽然都是同一软件,但是一个可以看喜羊羊,一个可以看七龙珠。

作者:知乎用户
链接:https://www.zhihu.com/question/25532384/answer/411179772
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

线程和进程的简单理解相关推荐

  1. linux 线程与进程的简单区别

    一.进程与线程的区别 一个进程至少包含一个线程,线程可以在同一时刻做不止一件事情:进程是线程的容器,里面可以包含很多个线程. 进程:是资源分配的最小单位 线程:是程序执行的最小单位 区别一: 进程:父 ...

  2. python中线程和进程_python中线程和进程的简单了解

    一.操作系统.应用程序 1.硬件:硬盘.cpu.主板.显卡........ 2.装系统(本身也是一个软件): 系统就是一个由程序员写出来的软件,该软件用于控制计算机得硬盘,让他们之间进行互相配合. 3 ...

  3. [操作系统] 线程和进程的简单解释

    进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 1. 计算机的核心是CPU,它 ...

  4. python线程和进程-未完待续

    python线程和进程-未完待续 环境变量 0. 概念 1. 并行/并发 并行 并发 并行与并发的关系 2.进程/线程 基本概念 线程 多线程 队列 互斥锁/线程共享 阻塞 锁 条件锁 进程 多进程 ...

  5. 探究线程与进程的区别这一问题

    进程和线程基础(理论概念) 1. 定义 看了下面的定义,可能会有点晕,但我还是要把他写下来(为了严谨). 进程是资源(CPU.内存等)分配的基本单位,具有一定独立功能的程序关于某个数据集合上的一次运行 ...

  6. CPU核心数线程数、程序进程线程、并发并行的简单理解

    CPU核心数线程数.程序进程线程.并发并行.简单理解和区分 这篇文章是对上述感念的简单理解,想深入研究可以看看<计算机组成原理> CPU的核心数 线程数 当我们买电脑的时候,会看到CPU的 ...

  7. 多CPU,多核,多进程,多线程以及进程和线程的简单理解以及区别

    当面临这些问题的时候,有两个关键词无法绕开,那就是并行和并发. 首先,要先了解几个概念: 1.进程是程序的一次执行. 2.进程是资源分配的基本单位. 3.一个进程可以包括多个线程. 4.在单CPU计算 ...

  8. iOS开发 - 线程与进程的认识与理解

    进程: 进程是指在系统中正在运行的一个应用程序,比如同时打开微信和Xcode,系统会分别启动2个进程; 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内; 线程: 一个进程要想执行任务 ...

  9. 对线程与进程的区别以及对多线程并发的理解

    一.线程与进程的区别 先简单说说线程与进程的概念: (1)进程是指一个内存中运行的应用程序,比如在Windows系统中,一个运行的exe就是一个进程. (2)线程是指进程中的一个执行流程. 区别: 一 ...

最新文章

  1. python常用命令大全-Python常用命令之集合
  2. c# winform实现2048游戏
  3. windows配置xhprof,PHP性能分析工具
  4. 【防衰老教程】记录一次IDEA,开发JavaWeb项目时JS中文乱码排错
  5. 移动app测试之怎么避免bug漏测
  6. 摆脱困境:将环境特定的Cron表达式与@Scheduled批注一起使用
  7. 基于MQTT协议进行应用开发
  8. adafruit1306_Adafruit的2015年最佳开源可穿戴设备
  9. windows 开启mysql日志记录_Windows下MySQL开启历史记录
  10. 一个 TypeScript keyof 泛型用法
  11. sql Sever的存储过程如何转换为mysql
  12. 小程序开发,不现实用户的头像!
  13. css的写法 有点凌乱(养成这习惯 神马浏览器兼容都是浮云 so easy)
  14. 2019 GNU Tools Cauldron 参会观感
  15. webrtc-sdp编码信息协商
  16. iOS App添加Spotlight搜索(附Swift Demo)
  17. android蓝牙hid 鼠标,BLE HID协议-----蓝牙鼠标代码流分析
  18. 工程化框架之feather
  19. Android 抛弃原生MediaPlayer 使用音频框架 StarrySky
  20. Eclipse+Java+Swing+Mysql实现员工工资管理系统

热门文章

  1. 《产品经理的20堂必修课》一第2章 围绕用户需求打造产品竞争力2.1 不同层次的用户需求...
  2. uni-app开发微信小程序,关于获取手机号事件绑定的坑
  3. Android虎头金刀之RadioButton之神仙妖怪
  4. 材质模块, (未完成...)
  5. java导出word打不开
  6. 童言无忌最高境界~~笑死人
  7. 安卓国际化(多语言切换),支持小语种
  8. 读起来,微微心疼的句子
  9. 2010笔记本显卡排行榜
  10. 如何利用Python爬取网站数据?