while (true)
{
// Indicate the intent to enter the critical section
bIWantToEnter = true;
// Enter the critical section if the other
// process does not indicate the same intent
if (!bHeWantsToEnter) break;
// Back off to give the other process
// a chance and continue the active
// waiting cycle
bIWantToEnter = false;
}
// Code of critical section comes here
...
bIWantToEnter = false;