首页 > 其他分享 >互斥信号量和二值信号量

互斥信号量和二值信号量

时间:2022-10-20 12:03:28浏览次数:57  
标签:优先级 信号量 互斥 任务 二值 翻转

  互斥信号量其实就是一个拥有优先级继承的二值信号量,在同步的应用中(任务与任务或者任务与中断)二值信号量最适合。互斥信号量适用于那些需要互斥访问的应用中。在互斥访问中互斥信号量相当于一把钥匙,当任务想要使用资源的时候就必须先获得这个钥匙,当使用完资源以后就必须归还这个钥匙,这样其它任务就可以拿着这个钥匙去使用资源。

  互斥信号量和二值信号量操作基本相同,但相对于二值信号量而言,互斥信号量具有优先级继承的特性。当一个互斥信号量正在被一个低优先级的任务使用,而此时高优先级的任务也尝试获取这个互斥信号量的话就会被阻塞。不过这个高优先级的任务会将低优先级任务的优先级提升到与自己相同的优先级,这个过程就是优先级继承。优先级继承尽可能降低了高优先级任务处于阻塞状态的时间,并且将已经出现的“优先级翻转”的影响降到最低。

  优先级继承并不能完全的消除优先级翻转,它只是尽可能的降低优先级翻转带来的影响。硬实时应用应该尽可能在设计之初就要避免优先级翻转的发生。互斥信号量不能用于中断服务函数中,原因如下:

 

标签:优先级,信号量,互斥,任务,二值,翻转
From: https://www.cnblogs.com/lc0811/p/16809349.html

相关文章

  • Go 互斥锁Mutex
    Mutex是一个互斥锁,可以创建为其他结构体的字段;零值为解锁状态。Mutex类型的锁和线程无关,可以由不同的线程加锁和解锁。互斥锁的作用是保证共享资源同一时刻只能被一个Gor......
  • 【STM32H7】第19章 ThreadX信号量
    ​​​​第19章      ThreadX信号量本章节开始讲解ThreadX的另一个重要的任务间的同步和资源共享机制,信号量。19.1信号量19.2信号量任务通知(又称EventChaining事......
  • 信号量Semaphore
    1.应用场景对于多个线程来说,想要设计争抢有限的资源,可以用信号量来解决2.代码publicstaticvoidmain(String[]args){ExecutorServiceexecutorServic......
  • 多个生产者,单个消费者,信号量
    #include<stdio.h>#include<fcntl.h>#include<stdlib.h>#include<pthread.h>#include<semaphore.h>#definemin(a,b)((a)<(b)?(a):(b))#defineNBUFF10#de......
  • 图像二值化
    1.图像二值化图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。图像的二值化使图像中数据量大为减少,从而能凸显出目标......
  • 多个生产者,单个消费者,互斥锁
    #include<stdio.h>#include<stdlib.h>#include<pthread.h>#definemin(a,b)((a)<(b)?(a):(b))#defineMAXNITEMS1000000#defineMAXNTHREADS10intnitems......
  • 基于旋转轮廓的点云局部浮点型和二值化特征描述(RCS)
    本次介绍一个发表于ComputerVisionandImageUnderstanding的经典三维点云描述子RCS。论文地址:JiaqiYang,QianZhang,KeXian,YangXiao,ZhiguoCao,“Rotationalco......
  • Linux进程间通信——使用信号量
    一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码......
  • 多线程同步与互斥
    1.互斥#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<pthread.h>#include<errno.h>pthread_mutex_tmutex=PTHREAD_MUTEX_INITIALIZER;intlock_v......
  • Linux系统编程——线程同步与互斥:互斥锁
    为什么需要互斥锁?在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同时(还没有打印完),别人刚好也在......