任务间同步 | 信号量、互斥量和事件集

本文介绍了任务间同步的概念,包括互斥量、信号量和事件集。互斥量用于保护临界区,保证资源的互斥访问,通过优先级继承算法解决优先级翻转问题。信号量则是一种轻量级同步机制,用于管理资源数量。事件集能实现一对多、多对多同步,通过32位无符号整型变量表示事件关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文分享自中移OneOS公众号《任务间同步》。

多个任务操作同一块代码区域,这块代码就称为临界区,如果任何时刻最多只允许一个任务去使用临界区,那么多个任务就需要互斥的访问。当一个任务占用此资源时,其它需要该资源的任务必须等待,直到占用者释放资源。

另外一种使用场景是任务间同步,是指多个关联任务需要按预定的次序运行,如果没有同步,那任务之间将是无序、不符合预期的。

互斥量

互斥量有解锁加锁两种状态,初始化时互斥量处于解锁状态,当有任务获取该互斥量后,处于加锁状态,此时其他任务没有权限再获取该互斥量,直到当前任务释放。同时,互斥量具有递归特性,持有该互斥量的任务也能够再次获取而不被挂起。

在操作系统中,使用优先级继承算法解决优先级翻转问题。优先级翻转是指当一个高优先级任务H通过同步机制访问同步资源时,该资源已被一低优先级任务L占有,而系统中还有中优先级的任务M在执行,造成L得不到调度,高优先级任务H就一直被阻塞,结果M先于H执行,优先级发生了翻转,实时性难以得到保证。优先级继承算法实现如下,高优先级任务H在等待低优先级的任务L占用的同步资源时,由操作系统把L的优先级提高到H的优先级,从而让L以H的优

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值