有时需要在多个任务执行之前来使它们同步。
如果预先知道执行每项任务所需要的时间,它们就可以通过简单地等待由最慢的任务产生的信号来实现同步。然而,如果不知道那个任务是最慢的,就需要使用一个更复杂的同步化机制,如下所示VAL 3程序就是一例。
如果预先知道执行每项任务所需要的时间,它们就可以通过简单地等待由最慢的任务产生的信号来实现同步。然而,如果不知道那个任务是最慢的,就需要使用一个更复杂的同步化机制,如下所示VAL 3程序就是一例。
例如
// N个任务的同步程序
此后该程序synchro(num& n, bool& bSynch, num nN)必须在每个要同步的任务中被调用。n变量必须初始化为0, bSynch,false,和要同步的任务数nN。
begin
n =n + 1
// 任务同步等待指令
// 确保所有的任务都在这里等待以继续运行
wait((n==nN) or (bSynch==true))
bSynch = true
n =n - 1
// 任务释放等待指令
// 确保所有的任务都已经继续运行,以清除同步上下文
wait((n==0) or (bSynch == false))
bSynch = false
end