declare proc {Barrier Ps} fun {BarrierLoop Ps L} case Ps of P|Pr then M in thread {P} M=L end {BarrierLoop Pr M} [] nil then L end end S={BarrierLoop Ps unit} in {Wait S} end