并发编程(三)

1、线程之间如何通信,进程之间如何通信

进程是程序在计算机上的一次执行过程,它包含了程序的代码、数据和系统资源。每个进程都有独立的内存空间和系统资源,相互之间互不干扰。进程是程序执行的基本单位,也是操作系统进行资源分配和调度的基本单位。

线程是进程中的一个执行单元,一个进程中可以包含多个线程,这些线程共享同一个进程的内存空间和系统资源。线程之间通信更方便,同时创建和切换线程的开销也比进程小。线程是处理器任务调度和执行的基本单位,多个线程可以并发执行,提高程序的执行效率。

1、线程之间通信:

线程之间通信的主要方式是通过共享内存和消息传递。

共享内存:线程之间共享同一份内存空间,可以直接读写对方的数据。这种通信方式的速度非常快,但需要保证同步和互斥,否则会发生数据竞争。常见的同步机制有信号量、互斥锁等。

消息传递:线程之间通过发送和接收消息来通信。这种方式比较安全,不会发生数据竞争,但通信速度相对较慢。常见的消息传递机制有管道、队列、信号等。

2. 进程之间通信:

进程之间通信的方式相对比较多,主要包括以下几种:

管道:管道是最早的进程间通信方式之一,它包括匿名管道和命名管道两种。匿名管道只能在具有亲缘关系的进程之间使用,而命名管道则可以在不相关的进程之间使用。

消息队列:消息队列是一种存储在内核中的消息链表,进程可以通过发送和接收消息来进行通信。这种方式比较灵活,可以传递不同类型的数据。

信号量:信号量是一种用于同步的机制,它可以在不同的进程之间传递信号,以控制对共享资源的访问。

共享内存:进程之间可以通过共享内存来直接读写对方的数据。这种方式的速度非常快,但需要保证同步和互斥,否则会发生数据竞争。常见的同步机制有信号量、互斥锁等。

套接字:套接字是一种通用的进程间通信机制,它可以在不同的主机之间进行通信。套接字可以实现多种协议,如TCP、UDP等。

2、happens-before规则

在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关

系。这里提到的两个操作既可以是在一个线程之内,也可以是在不同线程之间。

·程序顺序规则:一个线程中的每个操作,happens-before于该线程中的任意后续操作。

·监视器锁规则:对一个锁的解锁,happens-before于随后对这个锁的加锁。

·volatile变量规则:对一个volatile域的写,happens-before于任意后续对这个volatile域的读。

·传递性:如果A happens-before B,且B happens-before C,那么A happens-before C。

两个操作之间具有happens-before关系,并不意味着前一个操作必须要在后一个操作之前执行!happens-before仅仅要求前一个操作(执行的结果)对后一个操作可见,且前一个操作按顺序排在第二个操作之前。

3、事务

事务(Transaction)是指一组操作作为单个操作执行的一种方式。这些操作作为一个逻辑单元被执行,要么全部执行成功,要么全部不执行。事务通常用在需要满足一定原子性、一致性、隔离性和持久性的场景,例如在银行转账操作时,必须保证金额的准确性;在购物网站支付时,必须保证钱款支付的原子性等。

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

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

相关文章

大文件分片上传,断点续传,秒传 示例(待更新...)

1.html代码 <template><div class"card content-box"><el-upload ref"upload" class"upload-demo" action"https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15":limit"1" :on-change"hand…

30道JVM综合面试题详解含答案(值得珍藏)

1. 描述一下JVM加载Class文件的原理机制? Java中的所有类&#xff0c;都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类&#xff0c;而它的工作就是把class文件从硬盘读取到内存中。在写程序的时候&#xff0c;我们几乎不需要关心类的加载&#xff0c;因为这些都…

Java SE入门及基础(7)

数据类型转换 1. 自动类型转换 相互兼容的多种数据类型在运算时&#xff0c;小转大即为自动类型转换。如&#xff1a; 10 0.5 > 10.0 0.5 2. 强制类型转换 相互兼容的多种数据类型在运算时&#xff0c;大专小即为自动类型转换。如&#xff1a; 68.5 1.5 > (int)7…

网络编程的理论基础

文章目录 1 重点知识2 应用层3 再谈 "协议"4 HTTP协议4.1 认识URL4.2 urlencode和urldecode4.3 HTTP协议格式4.4 HTTP的方法4.5 HTTP的状态码4.6 HTTP常见Header4.7 最简单的HTTP服务器 3 传输层4 再谈端口号4.1 端口号范围划分4.2 认识知名端口号(Well-Know Port Nu…

环信IM Demo登录方式如何修改为自己项目的?

在环信即时通讯云IM 官网下载Demo&#xff0c;本地运行只有手机验证码的方式登录&#xff1f;怎么更改为自己项目的Appkey和用户去进行登录呢&#xff1f; &#x1f447;&#x1f447;&#x1f447;本文以Web端为例&#xff0c;教大家如何更改代码来实现 1、 VUE2 Demo vue2…

叉车车载终端定制_基于MT6762安卓核心板的车载终端设备方案

叉车车载终端是一款专为叉车车载场景设计的4英寸Android车载平板电脑。它采用了高能低耗的8核ARM架构处理器和交互开放的Android 12操作系统&#xff0c;算力表现强大。此外&#xff0c;该产品还具备丰富的Wi-Fi-5、4G LTE和蓝牙等通讯功能&#xff0c;可选配外部车载蘑菇天线&…

Flutter GestureDetector 属性介绍及使用

Flutter 是一款强大的跨平台移动应用框架&#xff0c;它提供了丰富的组件和功能&#xff0c;以便开发者构建高性能、美观的移动应用。其中&#xff0c;GestureDetector 是一个非常重要的手势识别组件&#xff0c;用于捕获用户在屏幕上的各种手势操作。在本文中&#xff0c;我们…

【麒麟V10系统x86环境--bash: ./install:/bin/bash:解释器错误: 权限不够】

不知道那位大拿分享的这个神操作、给力呀 标题-bash: ./install&#xff1a;/bin/bash&#xff1a;解释器错误: 权限不够 执行这个命令即可&#xff1b;sudo setstatus Softmode

Ubuntu server搭建dhcp服务器

安装 直接使用一下命令进行安装 apt-get install isc-dhcp-server 以下就是安装好的图片 然后进入dhcp目录 cd /etc/dhcp 进入后用ls查看当前目录存在哪些文件 使用如下进入dhcp.conf vim dhcpd.conf 红&#xff1a;设置ip域和子网掩码 绿&#xff1a;设置ip池范围 黄…

t2vec code

文章目录 执行过程preprocess.jl 解释h5 文件结构 执行过程 (base) zzqserver1:~/project/t2vec/preprocessing$ julia porto2h5.jl Processing 1710660 trips… 100000 200000 300000 400000 500000 600000 700000 800000 900000 1000000 1100000 1200000 1300000 1400000 15…

2024最新适用于 Windows 、Mac 的最佳屏幕录制软件

屏幕录制软件可以帮助我们录制 PC 和MacBook的实时屏幕视频。如果您想为 优酷录制视频&#xff0c;或者您正在为您的公司制作基于视频的项目&#xff0c;并且需要捕获屏幕的实时视频录制&#xff0c;那么我们在此列出了 一 款适合您的 Windows 、Mac的 2024 年最佳屏幕录制软件…

锤科HandShaker修改版,支持安卓14、澎湃OS

如今几乎各家手机厂商都在布局生态&#xff0c;但PC端往往是最容易被忽略的一环&#xff0c;哪怕是很强的华为鸿蒙、小米澎湃&#xff0c;想要做到手机和电脑互联&#xff0c;也限制了笔记本机型 虽然我一直致力于解锁非小米电脑安装小米电脑管家&#xff0c;比如前几天刚刚更…

【unity】精灵图集(Sprite Atlas)快速上手

Sprite Atlas&#xff08;精灵图集&#xff09;是一种将多个小图&#xff08;精灵&#xff09;打包成一个大图的技术。它的主要目的是优化游戏或应用程序的性能&#xff0c;减少内存占用和渲染开销。 创建&#xff1a; 右键直接创建&#xff1b;存放精灵的文件夹拖入 使用&…

决策树(公式推导+举例应用)

文章目录 引言决策树学习基本思路划分选择信息熵信息增益增益率&#xff08;C4.5&#xff09;基尼指数&#xff08;CART&#xff09; 剪枝处理预剪枝&#xff08;逐步构建决策树&#xff09;后剪枝&#xff08;先构建决策树再剪枝&#xff09; 连续值与缺失值处理连续值处理缺失…

考古学家 - 华为OD统一考试

OD统一考试 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 有一个考古学家发现一个石碑&#xff0c;但是很可惜发现时其已经断成多段。 原地发现N个断口整齐的石碑碎片&#xff0c;为了破解石碑内容&#xff0c;考古学家希望有程序能帮忙计算复原后的石…

Linux less命令教程:文件查看的利器(附案例详解和注意事项)

Linux less命令介绍 less 是一个可用于查看文件内容的命令&#xff0c;它具有向前和向后滚动功能。less 命令比相似的 more 命令有更多的功能。当您查看一个长度超过终端窗口高度的文本时&#xff0c;less 命令非常有用。 Linux less命令适用的Linux版本 在大多数 Linux 发行…

力扣题——2645.构造有效字符串的最少插入数

题目 给你一个字符串 word &#xff0c;你可以向其中任何位置插入 "a"、"b" 或 "c" 任意次&#xff0c;返回使 word 有效 需要插入的最少字母数。 如果字符串可以由 "abc" 串联多次得到&#xff0c;则认为该字符串 有效 。 第一想法…

精品公式——“V型反转”,精准把握V型反转行情,主副图分享

► 日线表现 代码评估 技术指标代码评估&#xff1a; M5, M14, M25 - 指数移动平均线&#xff08;EMA&#xff09;: M5:EMA(C,5),COLORLIBLUE;&#xff1a;5日指数移动平均线&#xff0c;用浅蓝色表示。 M14:EMA(C,13),COLORF00FF0;&#xff1a;13日指数移动平均线&#xff…

定时任务框架-xxljob

spring传统的定时任务Scheduled&#xff0c;但是这样存在这一些问题 &#xff1a; 做集群任务的重复执行问题 cron表达式定义在代码之中&#xff0c;修改不方便 定时任务失败了&#xff0c;无法重试也没有统计 如果任务量过大&#xff0c;不能有效的分片执行 1.分布式任务调…

详解矩阵的正交化(附例题分析)

目录 一. 矩阵Gram-Schmidt正交化的好处 二. 矩阵标准正交化过程 三. 例题 3.1 标准正交化 3.2 算法小结 3.3 优化分析 四. 小结 矩阵有两类等价关系 矩阵对角化 特殊矩阵 一. 矩阵Gram-Schmidt正交化的好处 假如有三个线性独立的向量a,b,c&#xff0c;他们是标准正…