Semaphore num = 0; Semaphore access = 1; ; Producer while (true) { product = produce(); P(access); push(product, buffer); V(access); V(num); } ; Consumer while (true) { P(num); P(access); prod = pull(buffer); V(access); consume(prod); }