How is SyncLevel used in the Mutex object?
The SyncLevel value is a debugging aid. It is used to ensure Mutexes are acquired in the proper order to prevent deadlocks. It accomplishes this by verifying that the Mutex levels do not go backwards. For example, if one piece of code acquires Mutex-A followed by Mutex-B, and some time later another code acquires Mutex-B followed by Mutex-A, this would present the opportunity for a deadlock. By numbering the levels of the Mutex objects, a developer can learn where the internal ordering of the Mutexes has been broken before shipping a product (as an out-of-order usage will cause a crash).