Pregunta de entrevista de NVIDIA

Differences between mutex and semaphore, how to apply them in practice?