parallel recursive-doubling-barrier-semaphore { const int d = 4; const int P = 2^d; Semaphore arrived[d][P] = { 0[P * d] }; process Pi[int p \in {0, ..., P-1}] { while (true) { // Berechnung; for (int i = 0; i < d; i++) // durchlaufe alle Stufen { int q = p ^ 2^i; // Bit i umschalten V(arrived[i][p]); P(arrived[i][q]); } } } }