semaphore和互斥锁的区别