global barriere2 const int n = 8 # Anzahl Prozesse sem b[0:n-1] = ([n] 0) # Feld von Barrierensemaphoren op barrier(val int myid, val int n) body barriere2 proc barrier (myid,n) { int pos = 1 # Bitwertigkeiten # Ankunftsphase while ((myid / pos) mod 2 == 0 & pos < n) { P (b[myid]) # Warte auf Partner pos *= 2 } if (myid != 0) { V(b[myid-pos]) # Melde Ankunft an Partner P(b[myid]) } # Abgangsphase while ( pos > 1 ) { pos = pos / 2; V(b[myid+pos]) } } end barriere2