Handel-C中的prialt

prialt statements are used with multiple channels, to select the first one that is ready for a read or   write.

prialt
{
       case CommsStatement:
               Statement
               break;
        ......
       default:
               Statement
                break;
}
prialt类似于Switch语句,只是它判断的条件是通道通信,而不是某个变量。它可以用来选择某个通道通信。
而选择的条件是:1、 哪个case后边的通道通信先准备好,就执行该通道通信,并且执行通道通信和break之间的语句  Statement 。2、通道同时准备好的时候,写在前边的case有优先权。3、如果所有通道都没准备好通信,就执行default后边的语句。
限制条件:同一个通道通信不能出现在两个case中。

例1
程序中的chan1,chan2和chan3通道都可以改变变量y的值,只要其中任意一个通道准备好传送数据,y的值就会被改变。可以通过改变通道中的值,而达到间接改变变量y的值。
while(1)
prialt
{
         case chan1 ? y:    //从通道读取数据
         break;
         case chan2 ? y:
         break;
         case chan3 ? y:
          break;
}

例2:
在如下程序中,prialt中的向通道写会被阻塞,直到第二个clk,z从second通道中读取完数据。
int 4 x, y, z;
chan <int 4> first, second;
par
{
            prialt
           {
                 case first ! x:
                 break;
                 case second ! y:
                 break;
            }
             seq
             {
                 delay;
                 second ? z;
             }
}

例3
prialt
{
     case a ? x:
          x++;
      break;
      case b ! y:
           y++;
      break;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值