互斥信号+任务临界创建+任务锁

简介: 互斥信号+任务临界创建+任务锁

普通信号量

1、信号量概念

  信号量像是一种上锁机制,代码必须获得对应的钥匙才能继续执行,一旦获得了钥匙,也就意味这该任务里有进入被锁部分代码的权限。一旦执行到被锁代码段,那么任务就一致等待,知道对应被锁部分代码的u傲视被再次释放才能继续执行。

  信号量用于控制对共享资源的保护,但是现在基本用来做任务同步。

作用:得到信号量的任务,可以保证该任务可以被执行完,从而不会被打断

信号量通常分为两种:二进制信号量和技术型信号量;

二进制信号量只能取 0 1 两个值,计数型信号量的信号量值大于 1

计数型信号量范围为 0~65535

二值信号量用于那些一次只能一个任务使用的资源,比如 I/O 设备,打印机,

计数型信号量用于某些资源可以同时被几个任务所使用,比如一个缓存池有 10 个缓存块,那么同时最多可以支持 10 个任务来使用内存池。

 

2、创建信号量函数

3、互斥信号量

作用:用于保证任务里面的程序不会被打断,保证任务程序可以完整执行完毕

任务执行顺序:按优先级排列进行运行

创建互斥信号量函数

等待信号量函数

释放互斥信号量

4、创建任务临界区

作用:创建全部任务后,在全部一起执行

5、任务锁

作用:保证任务执行过程中不被其他任务打断

低优先级上锁

任务上锁函数

 

任务结束函数

效果

 


相关文章
|
3月前
|
安全 C++
利用信号量实现线程顺序执行
【8月更文挑战第25天】信号量是多线程编程中用于控制共享资源访问的关键同步机制,能有效保证线程按预设顺序执行。实现方法包括:引入相关头文件(如 C++ 中的 `<semaphore.h>`),创建信号量并通过 `sem_init` 设置初始值;在各线程函数中运用 `sem_post` 与 `sem_wait` 来传递执行权;最后,通过 `sem_destroy` 销毁信号量以释放资源。使用过程中需注意错误处理、确保线程安全及合理设定信号量初值,以维持程序稳定性和高效性。
|
6月前
|
安全 算法 Linux
Linux多线程【线程互斥与同步】
Linux多线程【线程互斥与同步】
84 0
|
安全 程序员 编译器
线程互斥、同步(一)
线程互斥、同步
84 1
|
安全 数据安全/隐私保护
线程互斥、同步(二)
线程互斥、同步
62 1
|
安全 Linux 数据安全/隐私保护
Linux线程同步与互斥(一)
着重讲解Linux线程的互斥!
Linux线程同步与互斥(一)
|
Linux C语言
【Linux线程】二、线程控制原语
【Linux线程】二、线程控制原语
169 0
【Linux线程】二、线程控制原语
|
存储 算法 异构计算
SR锁存器与D锁存器设计与建模
⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。
199 0
SR锁存器与D锁存器设计与建模
|
缓存 NoSQL Redis
什么是自旋锁 自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。
什么是自旋锁 自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。
232 0
什么是自旋锁 自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。
|
Linux 调度 数据库
【Linux线程同步专题】一、什么是线程同步、互斥量与死锁
【Linux线程同步专题】一、什么是线程同步、互斥量与死锁
135 0
使用递增计数器的线程同步工具 —— 信号量,它的原理是什么样子的?
在 JUC 中线程同步器除了 CountDownLatch 和 CycleBarrier ,还有一个叫做 Semaphore (信号量),同样是基于 AQS 实现的。下面来看看信号量的内部原理。
127 0

相关实验场景

更多
下一篇
无影云桌面