NVIDIA Interview Question

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