update synchronization using Semaphore