下面是处理进程的算法形式描述:
  处理进程( )
  {
  根据当前运行路径,找到该进程所用的有关内部数据,恢复状态;
  取当前顺序语句;
  if (不含WAIT语句)           //此处解决不含WAITE语句的进程的激活问题。
   {
   if (敏感信号发生更新) 激活该进程; //注意:激活后的当前执行语句即是第一条语句。
   else return(NORMAL);        //没有激活,无任何动作,退出。
   }
  while (当前顺序语句 != NULL )    //当前顺序语句==NULL表示已经执行了进程中最后一条语句。
   {
   switch (语句类型)
   {
   case WAIT语句:
   //处理WAIT语句有两种情况:第一种是在进程激活状态下,及执行进程中的语句时遇到了WAIT语句, 第二种情况是在进程因为WAIT语句而挂起的情况下,需要判断是否要激活,其中对WAIT FOR语句的判断是在处理延时等待事件时判断的,并给进程设置了一个特殊的状态等时就绪状态,进入本算法是直接激活。
    switch (进程状态)
    { 
    case 激活状态:
      改进程激活态为挂起状态;  //因为此处是在执行顺序语句时遇到了WAIT语句,所以一定要挂起。
      if (有WAIT FOR子句) 设置延时等待事件;
      记录当前语句,作为下次激活时的入口;
      return (SUSPENDED);  //遇到WAIT FOR语句时,则设置延时等待事件,然后返回,返回标志为SUSPENDED(挂起)。其他WAIT语句则要到每个时刻进行
      break;
     case 等时就绪状态:   // 在信号更新、处理延时等待事件时设置,表示原来设的等待时间现在已经到时,现在应该进行进程计算。等时就绪状态是专为延时等待事件设置,时间到了后无论其他等待条件是否成立,一定要激活进程,进行进程计算。
     设进程状态为激活状态; //激活状态表示,本次应该进行计算。注意:该case语句无RETURN语句,即接着执行下一个循环(即VHDL的下一条语句)。
      break;
    case 挂起状态:  //在挂起状态下,WAIT语句一定是当前要执行的第一条语句,此处判断挂起条件是否满足。
       if (WAIT ON信号、WAIT UNTIL条件满足 )
        {
        设进程状态为激活状态; //激活后即进行后续语句的计算
        if (WAIT FOR 子句) 删除该语句的延时等待事件;
        }
       else return(NORMAL);  // 未被激活,不进行进程计算,直接退出。
       break;
      }
      break;
     case 其它顺序语句:
       执行语句;
       安排信号事件;
       break;
      }
      取下一个顺序语句;
      if (下一个顺序语句 != NULL )
        当前顺序语句 = 下一条顺序语句;   //后面接着执行下一条语句。
      else if (有 WAIT语句)
        当前顺序语句 = 第一条顺序语句; //注意:在有WAIT语句的进程中执行到最后一条语句后,要返回第一条语句接着执行,而不是结束。结束条件是直到遇到下一个WAIT语句,才使进程挂起。
      else   // 已到最后一句,且无WAIT语句 
       {   
       记录第一条语句,作为下次激活时的入口;  //对于无WAIT语句的进程,相当于在最后一条语句后加以跳WAIT ON语句。激活这样的进程是在本算法钱不进行的。此处将进程挂起返回。
       return(SUSPENDED);
       }
   }
  进程执行语句的复杂性表现在激活或挂起的处理上,请读者按照进程的概念和WAIT语句的语义,弄懂进程的执行过程,再弄懂该程序是如何实现这样的执行过程的。