有時需要在多個任務執行之前來使它們同步。
如果預先知道執行每項任務所需要的時間,它們就可以通過簡單地等待由最慢的任務產生的信號來實現同步。然而,如果不知道那個任務是最慢的,就需要使用一個更復雜的同步化機制,如下所示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