在操作系统开始运行前使用下面的语句建立一个信号量。
RandomSem = OSSemCreate(1); /* 建立随机数信号量 */<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
这样,我们就建好了一个叫RandomSem的信号量,可以使用它对共享资源进行管理。假设有两个任务Task1和Task2都需要产生随机数,则必须按照下面的格式进行代码编写。
任务一:
void Task1(void *pdata)
{
INT8U x;
INT8U err;
for (;;)
{
OSSemPend(RandomSem, 0, &err);/*请求信号量*/
x = random(80); /* 获取80以内的一个随机数*/
OSSemPost(RandomSem); /*释放信号量*/
/* 其他代码 */
}
}
任务二:
void Task2(void *pdata)
{
INT8U x;
INT8U err;
for (;;)
{
OSSemPend(RandomSem, 0, &err);/*请求信号量*/
x = random(20); /* 获取20以内的一个随机数*/
OSSemPost(RandomSem); /*释放信号量*/
/* 其他代码 */
}
}
文章评论(0条评论)
登录后参与讨论