vxWorks操作系统提供了一套丰富的任务间通信机制,包括:共享内存、信号量、Mutexe、信号队列和管道、socket、信号
1. 共享内存
2.互斥
当共享内存进行数据交换时,为避免竞争,需要对内存进行互锁。
2.1 中断上锁
funcA()
{
int lock = inLock();
/* 禁止中断的代码临界区 */
intUnLock(lock);
}
注意:对实时系统一般不使用,因为上锁期间会阻止系统对外部事件的响应。一旦要求紧急响应外部事件时,中断时间将难以接受
2.2 抢占上锁
抢占上锁时,中断服务程序仍然能够执行
funcA()
{
taskLock();
/* 禁止中断的代码临界区 */
taskUnLock();
}
3. 信号量
vxWorks操作系统中,信号量提供最快的任务间通信机制。是任务互斥和同步的最主要手段。
分3中类型:
==二进制信号量:=