How to use timeout in semaphore