結果 : what is the difference between a mutex and a semaphore in concurrent programming