semaphore practice add
blocking queue practice add