mutex = Semaphore(1); count = 0; limit=0; lockWest = Semaphore(1); lockEast= Semaphore(1); done = false; WestGo: mutex.wait(); lockEast.wait(); done = false; Count(); count = 0; lockWest.wait(); lockEast.signal(); mutex.signal(); EastGo: mutex.wait(); lockWest.wait(); done = false; Count(); count = 0; lockEast.wait(); lockWest.signal(); mutex.signal(); Count() while(count