ucos ii信号量提供哪些服务
答案:2 悬赏:10 手机版
解决时间 2021-04-08 21:01
- 提问者网友:杀生予夺
- 2021-04-08 04:25
ucos ii信号量提供哪些服务
最佳答案
- 五星知识达人网友:woshuo
- 2021-04-08 04:32
请参考函数说明,初始值,可以取0到65535之间的任何值。===============OSSemCreate()===============
该函数建立并初始化一个信号量,信号量的作用如下:
* 允许一个任务和其他任务或者中断同步
* 取得设备的使用权
* 标志事件的发生
函数原型:OS_EVENT *OSSemCreate(INT16U value);
参数说明:value 参数是所建立的信号量的初始值,可以取0到65535之间的任何值。
返回值:
OSSemCreate() 函数返回指向分配给所建立的信号量的控制块的指针。如果没有可用的控制块,OSSemCreate() 函数返回空指针。
该函数建立并初始化一个信号量,信号量的作用如下:
* 允许一个任务和其他任务或者中断同步
* 取得设备的使用权
* 标志事件的发生
函数原型:OS_EVENT *OSSemCreate(INT16U value);
参数说明:value 参数是所建立的信号量的初始值,可以取0到65535之间的任何值。
返回值:
OSSemCreate() 函数返回指向分配给所建立的信号量的控制块的指针。如果没有可用的控制块,OSSemCreate() 函数返回空指针。
全部回答
- 1楼网友:你可爱的野爹
- 2021-04-08 06:00
任务2输出5之后,由于等待信号量被挂起,之后任务1输出3,然后发信号量,注意发信号亮并不是简单的+1,ossempost中有这几行代码
if (pevent->oseventgrp != 0) {
(void)os_eventtaskrdy(pevent, (void *)0, os_stat_sem, os_stat_pend_ok);
os_exit_critical();
os_sched();
return (os_err_none);
}
此时因为任务2的优先级较1低,所以没有立即运行,而是任务1继续输出4、0然后挂起自己,任务2就运行了,输出678
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯