The mutual exclusion semaphore must be freed by the same thread that received it. The way they work: one thread gets a lock on the resource so that it can manipulate it, and then when it is finished, it releases this lock so that other threads can block it.
The whole point of the “mutual exclusion” bit is that a blocked thread has full power — only it can release this lock. This still allows the mutex to work with multiple threads, because it can belong to any of them throughout its life.
mutex , . , "" , .
, , , , - , .Net - .