sempahore, mutex, and deadlocl