当前位置: 代码迷 >> VxWorks >> vxworks中的事件驱动该如何理解
  详细解决方案

vxworks中的事件驱动该如何理解

热度:3893   发布时间:2013-02-26 00:00:00.0
vxworks中的事件驱动该怎么理解?
我理解的事件驱动,比如:建立了两个任务A,B,A中接收串口数据并解析,B执行某个算法;平时B挂起,当A中解析到特定命令时立刻执行B
那么这样的立刻执行B需要怎么实现呢?
------解决方案--------------------------------------------------------
在Vxworks中,没有事件驱动这个概念!
任务进行的同步用:信号量、消息!

示例如下:
SEM_ID semSync;
semSync = semBCreate(SEM_Q_PRIORITY, SEM_EMPTY);
 
taskA(void)
 {
     while(1)
    {
       //读取串口数据,并解析
       if(如果解析到命令,释放该信号量)
       semGive(semSync);      //信号量释放,有效
      }
 }

 taskB(void)
 {
    while(1)
    {
       semTake(semSync, WAIT_FOREVER);   //在这里一直等待信号量,如果信号量有效,则执行下面的程序
         //对串口数据进行处理,保存.....
        
     }
}

用消息队列也可以!但是二进制信号量最快!

  相关解决方案