Binary semaphores and mutexes are synchronization primitives mainly used to enforce access control in shared resources. A mutex is used to provide mutual exclusion in .NET applications where a process or thread has exclusive access to a resource. A binary semaphore is where there is no tie to resource ownership and access rights are used to manage resources.