任务间的同步控制

任务间的同步控制

  1. vxWorks信号量是提供任务间通信、同步、和互斥的最优选择
    1.1同步是指多个任务在执行次序上的协调,确保不会出
    现与时间有关的差错,在这种情况下信号量代表所等待的事件,最初信号量是不可用的,一个任务或中断处理程序释放该信号量来通知这个事件的发生,一旦被解除阻塞,任务就执行相应的事件来处理程序,需要注意的是用于同步时信号量的状态最初应该是空的,一个任务首先是等待由其他任务释放的信号量。
在这里插入代码片
任务间的执行顺序如下描述:
SEM_ID semSync;
semErrorSync=semBCreate(SEM_Q_FIFO,SEM_
EMPTY);/*创建显示告警信息信号量*/
semNewErrorSync=semBCreate(SEM _Q_FIFO,
SEM_EMPTY);/*创建显示新告警信息的信号量*/
taskErrorCheck(void){
···/*先显示一遍错误信息*/
semGive(semErrorSync);
semGive(semNewErrorSync);
}
}

`taskErrorDispCircle(void){
`semTake(semErrorSync,WAIT_FOREVER);
semTake(semNewErrorSync,WAIT_FOREVER);
···;/*循环显示告警信息*/
}

 由于semErrorSync和semNewErrorSync的 初 始 值 不可用,若任务taskErrorDispCircle()先执行则必然阻塞,只有在任务taskErrorCheck()执行完semGive()操作后,使2个信号量可用后,任务taskErrorDispCircle()方能执行。


`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值