C++ 并发编程 | 进程与线程

一、进程与线程

1、进程

1.1、定义

操作系统中最核心的概念就是进程,进程是对正在运行中的程序的一个抽象,是系统进行资源分配和调度的基本单位。进程是一种抽象的概念,一般由程序、数据集合和进程控制块三部分组成,如下:

  • 程序用于描述进程要完成的功能,是控制进程执行的指令集
  • 数据集合是程序在执行时所需要的数据和工作区
  • 程序控制块,包含进程的描述信息和控制信息,是进程存在的唯一标志

1.2、进程间通信方式

据进程通信时信息量大小的不同,可以将进程通信划分为两大类型,如下:

  • 低级通信: 控制信息的通信(主要用于进程之间的同步,互斥等控制信息的传递)
  • 高级通信: 大批数据信息的通信(主要用于进程间数据块数据的交换和共享,常见的高级通信有管道,消息队列,共享内存等)

进程间的通信方式,有下面几种:

  • 管道通信:管道通常指无名管道,是一种半双工的通信方式,数据只能单向流动。当一个管道建立时,它会创建两个文件描述符:fd[0]为读而打开,fd[1]为写而打开
  • 消息队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列,存放在内核中并由消息队列标识符(即队列ID)标识
  • 共享内存:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问
  • 信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问

2、线程

2.1、定义

线程(thread)是操作系统能够进行运算调度的最小单位,其是进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,这些线程共享同一块内存,线程之间可以共享对象、资源,如果有冲突或需要协同,还可以随时沟通以解决冲突或保持同步。

2.2、线程间通信方式

线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制,下面是常用的线程通信机制,如下:

  • 锁机制:通过锁实现线程同步
  • 信号量机制:线程的信号和进程的信号量类似,使用线程的信号量可以高效地完成基于线程的资源计数

2.3、线程同步

实现线程同步的方式有很多种,最常见的就是使用锁机制实现线程同步,线程同步的最终目标是实现对共享资源的安全访问

3、进程与线程的区别

进程是资源分配的最小单位,线程是CPU调度的最小单位,进程与线程的区别,如下:

进程线程
概念进程是对正在运行中的程序的一个抽象,是系统进行资源分配和调度的基本单位线程(thread)是操作系统能够进行运算调度的最小单位,其是进程中的一个执行任务(控制单元),负责当前进程中程序的执行
内存分配系统在运行的时候会为每个进程分配不同的内存空间系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享进程资源
切换开销每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小
包含关系一个进程可以包含多个线程轻量级进程

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

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

相关文章

乐观锁与悲观锁:高并发场景下的选择

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

实战纪实 | 记一次攻防演练

看到一处登录后台,各种操作都尝试过无果,翻了一下js,看到一处文件上传接口泄露(没图了,已经整改了) 构造上传数据包,很nice,上传成功 直接连接webshell,搭建隧道进行内网穿透 翻看配置文件&…

python两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…

笙默考试管理系统---countop

笙默考试管理系统---countop 目录 笙默考试管理系统---countop 一、 笙默考试管理系统-MyExamTest----countop 二、 笙默考试管理系统-MyExamTest----countop 三、 笙默考试管理系统-MyExamTest----countop 四、 笙默考试管理系统-MyExamTest----countop 五、 笙默…

TCP 拥塞控制对数据延迟的影响

哈喽大家好,我是咸鱼 今天分享一篇文章,是关于 TCP 拥塞控制对数据延迟产生的影响的。作者在服务延迟变高之后进行抓包分析,结果发现时间花在了 TCP 本身的机制上面:客户端并不是将请求一股脑发送给服务端,而是只发送…

【开源】基于JAVA语言的河南软件客服系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、系统展示四、核心代码4.1 查询客户4.2 新增客户跟进情况4.3 查询客户历史4.4 新增服务派单4.5 新增客户服务费 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的河…

字符串不可变性以及StringBuilder和StringBuffer在字符串拼接中的作用和扩容机制

java字符串的不可变性 在jdk1.8及以前,字符串底层存储用的是一个字符(char)类型的数组,jdk1.9之后用的是整型中的字节型(byte)数组来存储字符串。以下下主要以jdk1.8为例子展开。 private final char value…

新能源汽车出海业务之报关

引言 在做中国新能源汽车出海业务的信息化建设过程,秉承着深入了解业务的原则,对业务全链路进行学习了解总结,本文是针对出口报关业务环节的一些个人积累总结,供与诸位交流学习。 业务概述 报关是指在国际贸易中,出口…

Day34 贪心算法 part03 1005. K 次取反后最大化的数组和 134. 加油站 135. 分发糖果

贪心算法 part03 1005. K 次取反后最大化的数组和 134. 加油站 135. 分发糖果 1005. K 次取反后最大化的数组和 思路 第一步,从前向后遍历,遇到负数将其变为正数,同时K–第二步:如果K还大于0,那么反复转变数值最小的…

Marin说PCB之关于1000 BASE-T1--ESD的处理知多少?

对于板子上的ESD器件想必大家做硬件或者是layout应该的不陌生吧,我们几乎遇到大部分板子上面的接口部分都会添加这个ESD器件,例如那些USB,MIPI接口,百兆/千兆-T1以太网连接器等。 其中T1连接器用的是罗森博格家的,在这个链路中有一…

腾讯云轻量化应用服务器_轻量化应用服务器_轻量化私有云

腾讯云轻量应用服务器开箱即用、运维简单的轻量级云服务器,CPU内存带宽配置高并且价格特别便宜,大带宽,但是限制月流量,轻量2核2G3M带宽62元一年、2核2G4M优惠价118元一年,540元三年、2核4G5M带宽218元一年&#xff0c…

第二百七十四回

文章目录 1. 概念介绍2. 方法与类型2.1 使用方法2.2 常见类型 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何加载本地图片"相关的内容,本章回中将介绍如何获取文件类型.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回…

[python]变量与常量

变量 语法结构: 变量名valueluck_number8在堆内存中开一块空间,放入8,栈内存中变量名luck_number指向堆当中的内存空间 通过赋不同类型的值,可以直接动态修改python变量的数据类型 在python中允许多个变量指向同一个值 nonum…

Docker 仓库管理

Docker 仓库管理 仓库(Repository)是集中存放镜像的地方。以下介绍一下 Docker Hub。当然不止 docker hub,只是远程的服务商不一样,操作都是一样的。 Docker Hub 目前 Docker 官方维护了一个公共仓库 Docker Hub。 大部分需求…

如何在MinIO存储服务中通过Buckets实现远程访问管理界面上传文件

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统,它可以100%的运行在标准硬件上,即X86等…

chatgpt和文心一言哪个更好用

ChatGPT和文心一言都是近年来备受关注的人工智能语言模型。它们在智能回复、语言准确性、知识库丰富度等方面都有着较高的表现。然而,它们各自也有自己的特点和优势。在本文中,我们将从这几个方面对这两个模型进行比较,以帮助您更好地了解它们…

C#: richTextBox 富文本编辑控件使用

说明:在C#中,RichTextBox 是一个非常有用的控件,它允许用户在 Windows Forms 应用程序中编辑富文本格式的文本。RichTextBox 控件提供了许多功能,如字体、颜色、背景颜色、下划线、删除线、项目符号和编号列表等。 1.创建一个简单…

ArcGIS Pro 标注牵引线问题

ArcGIS Pro 标注 模仿CAD坐标牵引线问题 右键需要标注的要素,进入标注属性。 选择背景样式 在这里有可以选择的牵引线样式 选择这一个,可以根据调整间距来进行模仿CAD标注样式。 此图为cad样式 此为调整后gis样式 此处可以调整牵引线的样式符号 …

ClickHouse学习笔记(六):ClickHouse物化视图使用

文章目录 1、ClickHouse 物化视图2、物化视图 vs 普通视图3、物化视图的优缺点4、物化视图的用法4.1、基本语法4.2、准备表结构4.3、准备数据4.4、查询结果 1、ClickHouse 物化视图 ClickHouse 的物化视图是一种查询结果的持久化,它的存在是为了带来查询效率的提升…

KubeSphere 开源社区 2023 年度回顾与致谢

2023 年结束了,让我们再一次一起回顾一下 KubeSphere 开源社区在过去一年的变化。更重要的是,本篇文章将会对 2023 年所有参与过 KubeSphere 社区贡献的成员致以最诚挚的感谢,快来看看有没有你! 开源项目发展情况 2023 年&#…