ManualResetEventSlim при невозможности захватить ресурс просто некоторое (короткое) время продолжает делать это в цикле. Если и тогда не получается — тогда нить засыпает и ждёт, когда её разбудит ядро.
Поведение, аналогичное функциям InitializeCriticalSection и InitializeCriticalSectionAndSpinCount из WinAPI.
Выгода тут в том, что вход/выход в режим ядра — это очень долгая (в сравнении с этим небольшим циклом) операция.
.NET 4: “стройная” синхронизация