内容参考教程-1.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

10.1信号量

信号量像是一种上钺机制,代码必须狭得对应的才能继续执行,-口获得了,,也

就意味着该任务具有进入被锁部分代码的权限.一只执行至被锁代码段,则任务一直等待,直

到对应被锁部分代码的被再次释放才能继续执行.

信号量分为两种:一进制信号量与计数型信号量,一进制信号量只能取0和1两个值,计

数型信号最不止可以取2个值,在共享资漉中只有任何可以使用信号量,中断服务程序则不能

使用.

I、二M制侑号量

某一资源对应的信号最为I的时候,那么就可以使用这一资源,如果对应资源晌信号量为

0,那么等待该信号量的任务就会被放进嘴待信号量的任务表中.在等待信号量的时候也①以设

置超时,如果超过设定的时间任务没有等到信号量的话那么该任务就会进入就鳍态.任务以“发

信号R的方式操作信号量。可以看出如果一个信号量为二进制信号量的话,一次只能一个任务

使用共享资源。

2.计效型信号量

有时候我们需要;可以同时有多个任务爽享资源,这个时候二进制信号量就不能使用了,

计数型信号量就是用来解决这个问迎的.比如果一个信号量初始化值为10,那么只有前10个

清求该信号量的任务可以使用共享资源,以后的任畀需要等待前I。个任务释放掉信号量。每当

有任务请求信号量的时候.信号用的值就会减I,直到减为0.当有任务释放掉信号量的时候信

号量的值就会加I.

有关信号量的API函数如表10.1.1所示。

函数描述

OSSemCreate()创建一个信号量

OSSeniDeU)删除一个信号量

OSSemPend()等待一个信号量

OSSemPendAbort()取消等待

OSSemPost()释放-个信号量

OSSemSet()强捌设置一个信号量的值

表10.].1信号量API函数

10.1.1创建信号量

要想使用信号量,肯定需要先创建一个信号量,我们使用函数OSSemCreateO来创建信号量,

函数原里如下二

voidOSSemCreate(OS_SEM*p_sen^

CPU_CHAR*p_name,

OS_SEM_CTRent.

OS_ERR*p_eiT)

p-senu指向信号量捽制块,我仃需蛰按照如下所示方式定义一个全局信号量,并将

这个信号量一的指针传递给函数OSSemCreateOo

OS_SEMTestSem;

pname:指向信号量的名字a

cut,设置信号量的初始值,如果此值为I,代表此信号量为一进制信号量,如果大于I

的话就代表此信号量为计数型信号量。

P/E保存调用此函数后的返回的错误码。

10.1.2请求信号量

当一个任务需要独占式的某个特定的系统资源时,需要与其他任务或中断服务程序同

步,或者需要等待某个的发生,应该调用函数OSSemPend。,函数原型如下:

OS_SEM_CTROSSemPend(OS_SEM*p_se叫

OS_TICKtimeout,

OS_OPTopt,

CPU_TS*p_ts,

OS_ERR*p_err)

p_sem:指向一个信号量的镰匕

timeout:指定等待信号量的超时时间(时钟节拍数),如果在指定时间内没有等到信号量则

允许任务恢复执行。如果指定时间为0的话任务就会一直等待下去,直到等到信号

文档评论(0)

153****2416 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档