A Working Centralized Barrier
Consecutively entering the same barrier doesn’t work
- Must prevent process from entering until all have left previous instance
- Could use another counter, but increases latency and contention
Sense reversal: wait for flag to take different value consecutive times
- Toggle this value only when all processes reach
local_sense = !(local_sense); /* toggle private sense variable */
mycount = bar_name.counter++; /* mycount is private */
if (bar_name.counter == p)
bar_name.flag = local_sense; /* release waiters*/
while (bar_name.flag != local_sense) {}; }