并发编程——1.进程与线程

news2024/9/24 17:14:09

目录

  • 1.进程与线程
    • 1.1.概述
    • 1.2.并行与并发

本文笔记整理来自黑马视频https://www.bilibili.com/video/BV16J411h7Rd/?p=1,相关资料可在视频评论区进行获取。

1.进程与线程

1.1.概述

(1)进程

  • 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。
  • 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
  • 进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐等)。

(2)线程

  • 一个进程之内可以分为一到多个线程
  • 一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行。
  • 在Java 中,线程作为最小调度单位,进程作为资源分配的最小单位。 在 Windows 中进程是不活动的,只是作为线程的容器。

(3)二者对比

  • 进程基本上相互独立的,而线程存在于进程内,是进程的一个子集。
  • 进程拥有共享的资源,如内存空间等,供其内部的线程共享。
  • 进程间通信较为复杂:
    • 同一台计算机的进程通信称为 IPC (Inter-process communication)
    • 不同计算机之间的进程通信,需要通过网络,并遵守共同的协议,例如 HTTP。
  • 线程通信相对简单,因为它们共享进程内的内存,一个例子是多个线程可以访问同一个共享变量。
  • 线程更轻量,线程上下文切换成本一般上要比进程上下文切换低。

1.2.并行与并发

(1)并发
单核 CPU 下,线程实际还是串行执行的。操作系统中有一个组件叫做任务调度器,将 CPU 的时间片(Windows 下时间片最小约为 15 ms)分给不同的程序使用,只是由于 CPU 在线程间(时间片很短)的切换非常快,人类感觉 同时运行的。总结为一句话就是:微观串行,宏观并行。一般会将这种线程轮流使用 CPU 的做法称为并发 (concurrent)

CPU时间片 1时间片 2时间片 3时间片 4
core线程 1线程 2线程 3线程 4

在这里插入图片描述

(2)并行
多核 CPU 下,每个核 (core) 都可以调度运行线程,这时候线程可以是并行 (parallel) 的。

在这里插入图片描述

(3)这里引用 Rob Pike(golang 语言的创造者)的一段描述:
① 并发(concurrent)是同一时间应对 (dealing with) 多件事情的能力.
② 并行(parallel)是同一时间动手做 (doing) 多件事情的能力。

例子:
① 家庭主妇做饭、打扫卫生、给孩子喂奶,她一个人轮流交替做这多件事,这时就是并发;
② 家庭主妇雇了个保姆,她们一起这些事,这时既有并发,也有并行(这时会产生竞争,例如锅只有一口,一个人用锅时,另一个人就得等待);
③ 家庭主妇雇了3个保姆,一个专做饭、一个专打扫卫生、一个专喂奶,互不干扰,这时是并行;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022 年度作品优秀大赏 | 开发者说·DTalk

岁聿云暮之际,回首 2022,开发者们一直在迈着坚定的步伐向顶峰攀登,我们也竭尽所能不断为大家提供帮助——操作系统 Android 13 完成 Beta 版到正式版的蜕变,开发工具 Flutter 3.3 全力支持您的跨平台之旅,应用平台 Goo…

并行、并发、同步、异步、阻塞、非阻塞

并行 是指两个或者多个事件在同一时刻发生。并行是在不同实体上的多个事件。 并行针对多核 CPU 而言,它指的是多个核心同时执行多个任务的能力 单核 CPU 无法并行,并行只可能发生在多核 CPU 中。 并发 是指两个或多个事件在同一时间间隔发生。并发是…

【观察】让行业AI“触手可及”,NVIDIA创新与实践“从未止步”

毫无疑问,今天AI正与产业结合得越来越紧密,从自动驾驶,到智慧医疗,智慧金融、智慧城市等,AI已经开始渗透到我们生活的方方面面。事实上,即便目前来自传统行业用户的AI转型需求尚未完全激活爆发,…

第一篇 AlexNet——论文翻译

文章目录摘要1 简介2 数据集3 架构 3.1 ReLU非线性3.2 多GPU训练3.3 局部响应归一化3.4 重叠池化3.5 整体架构4 减少过拟合4.1 数据增强4.2 失活(Dropout)5 学习细节6 结果6.1 定性评估7 探讨摘要 论文链接:http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf …

VTK--交互方式vtkInteractorStyleTrackballCamera

前言:本博文主要介绍vtk中基于Camera的交互方式vtkInteractorStyleTrackballCamera 及其子类,小伙伴可以根据需求自定义交互方式。 目录 vtkInteractorStyleTrackballCamera vtkGeoInteractorStyle vtkInteractorStyleImage vtkInteractorStyleMult…

LeetCode刷题复盘笔记—一文搞懂动态规划之152. 乘积最大子数组问题(动态规划系列第三十六篇)

今日主要总结一下动态规划的一道题目,152. 乘积最大子数组 题目:152. 乘积最大子数组 Leetcode题目地址 题目描述: 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字&…

怎样学习线性代数?

最近在看《线性代数的几何意义》这本书,刚好也借用书里的总结,分享一下。 (注:本文是一篇我国代数名家丘维声教授在电大讲授线性代数课程时关于如何学好线性代数的综合论述,超牛!) 初学线性代数…

社区10款年度优秀插件框架盘点!

Cocos 社区年度插件框架 TOP 10以下游戏资源排名不分先后,Cocos Store & Cocos微店 年终元旦限时优惠进行中......作者:Chuan——张川介绍:一款节点树实时预览插件,支持 Cocos Creator 2.x\3.x 引擎版本,除节点预览…

云信小课堂 | 如何管理音视频的通话状态?

2022.12业务背景 用户在实际使用云信音视频通话 2.0 服务中,常常会遇到弱网,掉线等情况,对于这类情况,云信 SDK 提供了自动重连的相关策略,业务层不需要单独处理重连,只需要监听并做好相应的 UI 逻辑。所以…

【OpenCV】使用 Python 的铅笔素描图像

目录:使用 Python 的铅笔素描图像一、前言二、代码实战2.1 导包2.2 读取照片2.3 使用 OpenCV 显示图像2.4 灰度图像2.5 反转图像2.6 模糊图像2.7 减淡和融合三、结果展示五、源代码一、前言 图片在 Python 中表示为一组数字。所以我们可以进行各种矩阵操作来得到令…

跨域问题(三种解决方法)

跨域就是一个域名的网页去请求另一个域名的资源,比如你刚刚在A网站输入了自己的账号密码,然后访问B网站,B网站无法获取账号密码 两个请求的协议(比如http),域名(比如说localhost或者192.168.0.…

python 时间

目录标题python的时间模块1、时间戳2、时间元组3、获取格式化的时间可以自定义输出格式日期格式化的符号4、显示某月的日历5、sleep模块python的时间模块 1、时间戳 时间戳,以1970为时间基准,但是太过于遥远的时间就不可以了,windows最源支持…

基于springboot实验室管理系统(程序+数据库)

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

C进阶:征服指针之指针笔试题强化(3)

目录 ​​​​​​​ 🐲T1. ​​​​​​​ ​​​​​​​ 🤖 T2. ​​​​​​​ ​​​​​​​ 🐬 T3. ​​​​​​​ ​​​​​​​ 🐳 T4. ​​​​​​​ ​​​…

并发编程——5.共享模型之无锁

目录5.共享模型之无锁5.1.问题提出5.1.1.案例5.1.2.解决思路——锁5.1.3.解决思路——无锁5.2.CAS 与 volatile5.2.1.CAS5.2.2.volatile5.2.3.为什么无锁效率高5.2.4.CAS 的特点5.3.原子整数5.4.原子引用5.4.1.概述5.4.2.案例5.4.3.ABA 问题及解决5.5.原子数组5.6.字段更新器5.…

数位统计DP

目录 算法简介 算法讲解 数字计数 数位统计DP的递推实现 数位统计DP的记忆化搜索实现 算法实践 一 Windy数 二 手机号码 附录: 算法简介 数位统计 DP 用于数字的数位统计,是一种比较简单的 DP 套路题。 一个数字的数位有个位、十位、百位,等等,如果题目和…

Python3入门基础(03)数据结构

Python3 数据结构 Python3 中有四种标准的数据结构: List(列表)Tuple(元组)Set(集合)Dictionary(字典) Python 3 的六个标准数据类型中: 不可变数据&…

MATLAB算法实战应用案例精讲-【人工智能】语义分割

前言 语义分割是一种典型的计算机视觉问题,其涉及将一些原始数据(例如,平面图像)作为输入并将它们转换为具有突出显示的感兴趣区域的掩模。许多人使用术语全像素语义分割(full-pixel semantic segmentation),其中图像中的每个像素根据其所属的感兴趣对象被分配类别ID。…

跟领导提离职了,现在后悔,想留下来,怎么办?

提完离职后悔了,怎么办?是坚持不变,继续离开?还是厚着脸皮留下来?有些网友支持楼主留下,让他舔回去。有人说,等领导挽留,哪怕是做个样子,就同意留下来,如果完…

第9章 前端调用POST-Api注意事项

1 “ has been blocked by CORS policy: Response to preflight request doesnt pass access control check: It does not have HTTP ok status.”。异常 1.1 通过跨域策略解决 1.1.1 在appsettings.json文件中定义跨域策略配置 // 跨域(Cors)配置的域名及其端口集&#xff0…