In C#, a mutex is a thread-locking object that works across multiple processes. Only a process that can request or release a resource can modify the mutex. When a mutex is locked, the process will have to wait in a queue. When the mutex is unlocked, then it can be accessed. Multiple threads can use the same mutex, but only in a synchronous manner.
The benefits of using a mutex are that a mutex is a simple lock obtained before entering a critical piece of code. That lock is released when the critical piece of code is exited. Because only a single thread is in the critical piece of code at any one time, the data will remain in a consistent state as there will be no race conditions.
There are several disadvantages to using a mutex:
- Thread starvation occurs when a thread is unable to move forward as an existing thread has obtained a lock and has either gone to sleep or is pre-empted (prevented from completing...