一、进程

进程是指在系统中正在运行的一个应用程序,程序一旦运行就是进程。

进程是系统进行资源分配的独立实体, 且每个进程拥有独立的地址空间。

一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。

进程之间的通信

进程间通信 IPC(管道,信号量,共享内存,消息队列)。

二、线程

线程是进程的一个实体,是进程的一条执行路径。

线程是CPU独立运行和独立调度的基本单位。

线程之间的通信

线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

三、多线程

多线程是指从软件或者硬件上实现多个线程的并发技术

  • 多线程的好处:
  1. 使用多线程可以把程序中占据时间长的任务放到后台去处理,如图片、视屏的下载
  2. 发挥多核处理器的优势,并发执行让系统运行的更快、更流畅,用户体验更好
  • 多线程的缺点:
  1. 大量的线程降低代码的可读性;
  2. 更多的线程需要更多的内存空间
  3. 当多个线程对同一个资源出现争夺时候要注意线程安全的问题。

四、进程与线程的选择取决以下几点:

  1. 需要频繁创建销毁的优先使用线程;因为对进程来说创建和销毁一个进程代价是很大的。
  2. 线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应
  3. 因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布用线程;
  4. 并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求;
  5. 需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。

什么是线程?什么是进程?相关推荐

  1. 用户进程与内核进程是一一对应的吗_用户线程、内核线程和轻量级进程

    这一篇再继续就线程进行一些更深层次的研究 线程所需的资源 进程中各个线程共享代码.数据和文件等资源,记录线程运行状态的空间(TCB)每个线程单独有一个 每个进程都需要它自己私有的线程控制块(TCB) ...

  2. 【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )

    文章目录 一.内核线程概念 二.内核线程.普通进程.用户线程 三.内核线程.普通进程区别 四.内核线程主要用途 五.内核线程创建函数 kernel_thread 源码 一.内核线程概念 直接 由 Li ...

  3. 【Linux 线程】同一个进程中的线程共享哪些资源

    进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线 ...

  4. linux 内核线程与普通进程的区别

    linux 内核通过内核线程这种方式来实现在后台运行一些操作. 内核线程是在内核空间中单独存在的标准进程.内核线程与普通进程最大的不同在于: 内核线程没有地址空间.内核线程只能工作于内核空间,不能上下 ...

  5. python守护进程进程池_Python3标准库:multiprocessing像线程一样管理进程

    Python Python开发 Python语言 Python3标准库:multiprocessing像线程一样管理进程 1. multiprocessing像线程一样管理进程 multiproces ...

  6. 什么是线程?与进程又有什么区别,为什么要使用它,等对线程进行详细介绍

    一.什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 进程: 划分空间,加载资源,静态的,资源单位 线程: 执行代码,执行能力,动态的,执行单位 进程只是用来把资源集中到 ...

  7. 如何查询一个进程下面的线程数(进程和线程区别)

    在平时工作中,经常会听到应用程序的进程和线程的概念,那么它们两个之间究竟有什么关系或不同呢? 一.对比进程和线程 1)两者概念 -  进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程 ...

  8. linux c进程和线程脑图,进程和线程

    关于进程和线程,你需要理解下面这张脑图中的重点 进程 操作系统中最核心的概念就是 进程,进程是对正在运行中的程序的一个抽象.操作系统的其他所有内容都是围绕着进程展开的. 在多道程序处理的系统中,CPU ...

  9. c++ 等待子线程结束_?进程、线程、以及它们之间的区别与联系

    一.进程简介 1.1 进程概念的引入 计算机中,CPU是最宝贵的资源,为了提高CPU的利用率,引入了多道程序设计的概念.当内存中多个程序存在时,如果不对人们熟悉的"程序"的概念加以 ...

  10. 线程与进程的区别_Java线程和PC进程的区别

    进程和线程的区别 进程:资源分配的基本单位,多存在于操作系统任务中 线程:资源调度的基本单位,一般存在于某个程序中 JVM 主内存与工作内存间具体的交互 A:作用范围主内存变量 B:作用范围工作内存变 ...

最新文章

  1. TensorFlow实现多层感知机MINIST分类
  2. 速来!亚马逊云科技AI盛会开源专场吹响集结号
  3. 回溯法实现n份作业分配给n个人完成的问题
  4. webpack学习(七)打包压缩图片
  5. Spring Security与Maven教程
  6. 桐花万里python路-基础篇-05-字符串及浮点数
  7. 【报告分享】中国人工智能厂商全景报告.pdf(附下载链接)
  8. php文字红色代码,IOS_IOS中一段文字设置多种字体颜色代码,给定range和需要设置的颜色, - phpStudy...
  9. 机器学习基础(六十二)—— 白化
  10. 小沙的长路(图论+数学)
  11. 火绒盾广告拦截提取 内置WINCC PCS7硬狗弹框提示拦截
  12. 儿童电子产品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  13. python条形堆积图_Matplotlib堆积条形图
  14. Git下载安装(官网) 拉取代码的两种方法
  15. Android Studio升级到3.5之后xml格式化问题
  16. 浅谈互联网流量种类的划分,及其价值所在!做到精准引流定向吸粉。
  17. 爬虫框架:Scrapy 快速入门
  18. LeetCode-70. 爬楼梯(java)
  19. mysql case when then end 和 if判断 常见使用方法
  20. Java反射机制再学习

热门文章

  1. Web前端入门的学习路线总结
  2. 贴身管家(微信小程序版)
  3. computed vue 不 触发_Vue Computed 原理
  4. word日常排版——小技巧篇(非常实用)
  5. Android安卓开发基础-TextView
  6. multimap多重映照容器
  7. 手机APP原型(prototype)设计工具Balsamiq Mockups
  8. @马云老师,区块链行业的支付传承,请交由Qbao 演绎!
  9. 神州战神Z7-KP7GC安装Ubuntu18.04后开机进入Greb命令行模式
  10. es命令删除索引数据_Elasticsearch-删除数据