ucosII 信号量的原理及应用
来源:互联网 发布:持仓异动指标源码 编辑:程序博客网 时间:2024/05/09 19:02
#include
#define
char
char
INT8U
INT8U
OS_EVENT
//注意,前面有一个例子2
//BOOLEAN
//这样,当已经有任务访问共享资源时,其他的任务就不能访问,知道该资源未被访问,其他的任务才可以进行访问
//注意这两个信号量的区别和使用情况
OS_STK
OS_STK
OS_STK
void
void
void
void
void
{
Fun_Semp=OSSemCreate(1);
//用该参数对信号量计数器OSEventCnt进行初始化
//1即代表只创建一个信号量,代表信号量用于对共享资源的访问(例如,把它当做二值信号量使用)
}
void
{
#if
#endif
OSTaskCreate(YouTask,(void
for
}
//MyTask的函数代码
void
{
#if
#endif
PC_DispStr(0,++y,s1,DISP_BGND_BLACK+DISP_FGND_WHITE);
Fun(7,y);
OSSemPost(Fun_Semp);
}
void
{
#if
#endif
pdata=pdata;
for
{
OSSemPend(Fun_Semp,0,&err);
PC_DispStr(0,++y,s2,DISP_BGND_BLACK+DISP_FGND_WHITE);
Fun(7,y);
OSSemPost(Fun_Semp);
}
//公共的函数Fun的代码
void
{
PC_DispStr(x,y,"
}
创建信号量时,用的参数为1,即Fun_Semp=OSSemCreate(1);
共享资源的访问(例如,可以把它当做二值信号量使用)
在上面的程序中,当MyTask运行时,先请求获得了信号量,对共享资源Fun函数进行访问,由于只创建了一个信号量,
所以在MyTask的访问期间,即使任务YouTask也进行申请信号量,此时OSEventCnt是值已经为0了,所以会把任务
YouTask列入任务等代表OSEventTbl[]中,使任务处于等待状态。
只有等MyTask对Fun函数访问完成了,调用OSSemPost(Fun_Semp);释放了信号量,该释放信号量的函数会先检查任务等待
表中是否还有等待信号量的任务,如果有,则使任务进入就绪态后,调用调度器OS_Sched()引发一次任务调度,去运行等待
任务列表中优先级最高的任务。如果没有,则就把信号量计数器OSSemCnt加1.
所以任务YouTask要想访问Fun()函数,必须等到任务MyTask对Fun访问完毕,释放了信号量之后,才能访问,反之亦然
所以由上面可以看出,只创建一个信号量,即OSSemCreate(1);,作用就相当于使用一个二值信号量,标志共享资源是否正在
被访问。
看懂了上面的分析,也就可以解释实验现象了,由于YouTask等待2s,MyTask等待1s,所以有可能在MyTask访问Fan函数期间,YouTask也来访问(也有可能是反过来),但是由于信号量已经被MyTask占用了,所YouTask只好等待,MyTask使用完了,释放了信号量,YouTask才能正常使用Fun函数,这样也就解决了多任务对共享资源的使用的问题,使任务之间得到了同步
- ucosII 信号量的原理及应用
- UCOSII 信号量的使用
- UcosII 的信号量和邮箱
- UCOSII信号量
- uCOSii-信号量
- UCOSii-信号量
- UCOSII信号量的三个主要的函数
- 嵌入式实时操作系统ucosii原理及应用(任哲)-- --阅读笔记1
- 嵌入式实时操作系统ucosii原理及应用(任哲)-- --阅读笔记2
- ucosii 消息队列的应用
- [uC/OS-II原理及应用]信号量集
- [uC/OS-II原理及应用]信号量集
- MFC的多线程编程及信号量应用
- 【UCOSII】UCOSII应用要点
- 信号量流程图 UCOSII
- ucosii---------信号量&邮箱
- UCOSII源码-信号量理解
- 实现《ucosii原理与ARM应用程序设计》中ex2_3中遇到的错误
- Go Timer的使用
- FlyWeight模式
- C++ 拓扑排序
- 一次完整的HTTP请求与响应涉及了哪些知识?
- 算法谜题73 逮公鸡
- ucosII 信号量的原理及应用
- 继承(二)
- spring 框架的xml文件如何读取properties文件数据
- jquery ajax POST 例子详解
- 嵌入式学习 DAY1 JZ2440 V3 裸版烧系统
- 清华大学心理学系主任彭凯平: 千万不要以为孤独了,我就完蛋了 ——“空巢青年”系列讨论之六
- VS2015和TBB配合使用
- HTML网址重定向
- java中一直认为神奇的事件重写