Monitor.PulseAll уведомляет все ожидающие потоки в очереди.
Monitor.Pulse уведомляет поток в очереди ожидания. (Следующий ожидающий поток)
Только следующий поток (один поток) может получить блокировку. Так в чем же разница?
Когда мне следует использовать Pulse vs PulseAll?