semaphore update