direction = Semaphore(1) rope = Semaphore(5) int baboons = 1 int crossed = 0 direction.wait() if crossed < 5 baboon.fork() rope.wait() baboons++ cross crossed++ baboons-- rope.signal() if baboons == 0 cross = 0 direction.signal()