11.RT-Thread中的事件机制-event

RT-Thread操作系统中的事件机制是一种信号量扩展,适用于多种同步场景,包括一对一、一对多、多对一及多对多同步。通过事件,开发者能够更灵活地管理任务间的同步和通信。
摘要由CSDN通过智能技术生成

事件是信号量的扩展,在很多情况下可以用事件代替信号量的同步,事件可以一对一、一对多、多对一、多对多。

一个线程可等待多个事件的触发:可以是其中任意一个事件唤醒线程进行事件处理的
操作;也可以是几个事件都到达后才唤醒线程进行后续的处理;同样,事件也可以是多个线
程同步多个事件,这种多个事件的集合可以用一个32位无符号整型变量来表示,变量的每一
位代表一个事件,线程通过“逻辑与”或“逻辑或”与一个或多个事件建立关联,形成一个
事件集。事件的“逻辑或”也称为是独立型同步,指的是线程与任何事件之一发生同步;事
件“逻辑与”也称为是关联型同步,指的是线程与若干事件都发生同步。
RT-Thread定义的事件有以下特点:
• 事件只与线程相关,事件间相互独立:每个线程拥有32个事件标志,采用一个32 bit
无符号整型数进行记录,每一个bit代表一个事件。若干个事件构成一个事件集;
• 事件仅用于同步,不提供数据传输功能;
• 事件无排队性,即多次向线程发送同一事件(如果线程还未来得及读走),其效果等同
于只发送一次。
在RT-Thread实现中,每个线程都拥有一个事件信息标记,它有三个属性,分别是
RT_EVENT_FLAG_AND(逻辑与),RT_EVENT_FLAG_OR(逻辑或)以及RT_EVENT_FLAG_CLEAR
(清除标记)。当线程等待事件同步时,可以通过32个事件标志和这个事件信息标记来判断
当前接收的事件是否满足同步条件。
IPC对象
struct rt_event
{
    struct rt_ipc_object parent;                   
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值