semaphore-producer-consumer