semaphores lib