自学内容网 自学内容网

RT-thread线程间同步:事件集/消息队列/邮箱功能

一,事件集

1,事件集作用

        事件集主要用于线程间的同步,与信号量不同,它的特点是可以实现一对多,多对多的同步。即一个线程与多个事件的关系可设置为:其中任意一个事件唤醒线程,或几个事件都到达后才唤醒线程进行后续的处理;同样事件也可以是多个线程同步多个事件。

2,事件集描述

        使用事件集来达到线程间的同步,设计了thread1、thread2两个线程,优先级分别为8/9,设计了一个事件集event。线程thread1进入后接收事件组合"事件3或事件5",接收到事件时候进行100ms延时,然后接收事件组合“事件3 与事件5”,接收完成后结束线程。线程thread2进入后发送事件3,延时200ms;发送事件5,延时200ms;发送事件3,完成后结束线程。
        整体情况:thread1首先等待“事件3或事件5”的到来,thread2发送事件3,唤醒thread1接收事件,之后thread1等待“事件3与事件5”;thread2再发送事件5,进行延时,thread2发送事件3,等thread1延时结束就能接收事件组合“事件3与事件5”。
        线程在同时接收多个事件和接收多个事件中的一个时的运行情况。整个运行过程过程描述:

在tshell线程中初始化一个事件集event,初始化为先进先出型;并分别初始化、启动线程thread1、


原文地址:https://blog.csdn.net/wangjie36/article/details/137735535

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!