uC/OSII 中各种事件管理方式的一般规律

来源:互联网 发布:手机淘宝没有延长收货 编辑:程序博客网 时间:2024/06/01 07:52

uC/OSII中的事件管理方式通常包括:信号量管理、互斥信号量管理、事件标志组管理、消息邮箱管理、消息队列管理。这些事件管理方式各有异同,下面我简单的说说其中的异同点。

相同之处:

1、一般包含有OSxxxCreate()、OSxxxPend()、OSxxxPost()以及OsxxxDel()这几种不可或缺的函数,在使用一个事件管理方式程序时:创建、请求、提交、删除必不可少;

2、创建函数一般是从事件空闲表中取出一个初始化赋值;

3、请求函数一般是先进行参数检查然后是检查有没有相关的资源,有就直接返回函数继续执行后面的语句,没有就阻塞本任务到事件结构体中,随后进行一次调度把自己阻塞,在随后经过几次CPU控制权的变化在执行本任务时就检查请求是否成功,最后整理一下TCB中的各个标志;

4、提交函数一般先是进行参数的检查,然后检查事件标志组中有没有阻塞的事件,有就将事件就绪(这个就绪就相当于把之前请求资源函数给激活,免去了一直请求函数等待标志有效的循环,这么做是非常高明的),没有就将资源数量加一,然后返回;

5、删除函数一般分两种情况:一是没有任务等待该资源就删除,二是无论如何都删除,对应的两种删除处理方式也都是在各种事件管理方式中差不多相同的,只要知道其中的一种,就应该估计的出来其他事件管理方式删除具体操作;

不同之处:

1、不同的事件管理方式所对应的数据结构一般不同,最核心的是结构体不同,结构体包含的内容一般都与事件管理的具体应用要求有关;

2、不同事件管理方式适用于不同的情况下,要根据具体的要求而定;

3、不同的事件管理所用进行请求和提交时所用的标志不同,而标志是核心中的核心,影响整个事件管理的算法;


目前我只是总结到这些异同,要知道其中的奥妙还得啃源码,把源码看懂再进行一些总结有助于从整体上理解每个函数每个标志的意义。

1 0
原创粉丝点击