信号量(上)

简介: 信号量(上)

竞争是协作的特例,竞争关系是属于协作关系

信号量可以解决协作关系存在的问题,那么它也可以解决竞争关系存在的问题

信号量

信号量就是一个整数

先等待,然后再发送信号

p在荷兰语中代表测试

v在荷兰语代表增加

这个函数的执行流需要自己画,假设有四个进程并发执行

这里只是一个顺序执行产生的并发流程,其实还有其他的流程

信号量区域可以划为临界区

上面的信号量叫做二值信号量

但是我们要注意这里的p操作和v操作都是原子操作(中途不能被打断),需要操作系统支持。

根据前面的算法

先执行到p(原子操作)的车子(蓝色)会先进入critical section,而如果这时候红色车子进来,那么因为mutex=0了,所以此时会进入while循环(busy waiting),等待蓝车通过critical section,红车才会执行,然后蓝车释放,红车通过critical section,红车释放。

一般信号量

除了二值信号量,其他的信号量都是一般信号量

将信号值定义为2,那么只能同时跑两个进程并发

测试执行顺序1——2——3

增加执行顺序

2——3——1——3

车辆执行顺序

这里如果road等于0,那么一个是会出现我们前面讲的死锁,这个死锁是任何进程都无法进入road。

相关文章
|
Java Spring 微服务
Spring 中优雅的获取泛型信息
简介 Spring 源码是个大宝库,我们能遇到的大部分工具在源码里都能找到,所以笔者开源的 mica 完全基于 Spring 进行基础增强,不重复造轮子。今天我要分享的是在 Spring 中优雅的获取泛型。
4242 0
|
10月前
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
225 11
|
Java Linux 开发工具
用sdkman管理多个jdk切换
【10月更文挑战第13天】SDKMAN 是一个用于在基于 Unix 的系统(如 Linux 和 macOS)上管理多个软件开发工具包(SDK)版本的工具,特别适用于管理不同版本的 JDK。通过 SDKMAN,开发者可以轻松安装、切换和设置默认 JDK 版本,提高开发效率。安装后,可以通过 `sdk list java` 查看可用版本,使用 `sdk install java` 安装特定版本,并通过 `sdk use java` 切换版本。此外,还可以设置默认 JDK 版本,确保新终端会话中自动使用指定版本。验证版本切换是否成功,只需运行 `java -version` 命令即可。
824 1
|
7月前
|
SQL 存储 API
Flink Materialized Table:构建流批一体 ETL
Flink Materialized Table:构建流批一体 ETL
116 3
|
10月前
|
数据采集 数据可视化 索引
Pandas数据应用:股票数据分析
本文介绍了如何使用Pandas库进行股票数据分析。首先,通过pip安装并导入Pandas库。接着,从本地CSV文件读取股票数据,并解决常见的解析错误。然后,利用head()、info()等函数查看数据基本信息,进行数据清洗,处理缺失值和重复数据。再者,结合Matplotlib和Seaborn进行数据可视化,绘制收盘价折线图。最后,进行时间序列分析,设置日期索引、重采样和计算移动平均线。通过这些步骤,帮助读者掌握Pandas在股票数据分析中的应用。
400 5
|
搜索推荐 API
LangChain-16 Using Tools LangChain封装好的工具集tools
LangChain-16 Using Tools LangChain封装好的工具集tools
168 5
|
JSON 安全 开发工具
NPM 常用命令(一)
NPM 常用命令(一)
|
自然语言处理 PyTorch 测试技术
ESRE 系列(一):如何部署自然语言处理 (NLP):文本嵌入和向量检索
本文将举例说明如何使用文本嵌入模型来生成文本内容的向量表示,并演示如何对生成的向量进行向量检索。我们将会在 Elasticsearch 上部署一个面向所有人群开放的模型,然后在采集管道中使用它来从文本文档生成嵌入。接下来,我们会展示如何在向量检索中使用这些嵌入来查找对于给定查询而言语义相似的文档。
36016 12
ESRE 系列(一):如何部署自然语言处理 (NLP):文本嵌入和向量检索
|
JavaScript
JS子页面如何获取父页面的变量、对象、方法
JS子页面如何获取父页面的变量、对象、方法
276 0
|
监控 Linux 网络安全