They implement all you might dream of in terms of scheduler-niceness, namely priority inversion handling and reentrancy.
This problem is soon solved when the mutex calls are wrapped around a linear access to a reasonably small amount of memory.