Это запрещенное знание в синхронизации потоков.Потому что это невозможно сделать точно.Это представляет неразрешимое состояние гонки.Когда вы используете подход Хабджана, вы придете к выводу, что, скажем, два потока ожидают.Через микросекунду другой поток вызывает WaitOne (), и их три.Но вы будете принимать решения, основываясь на этом устаревшем значении.
С условиями гонки нечего возиться, их невероятно сложно отлаживать.Они имеют привычку делать ваш код неудачным только один раз в неделю.Как только вы добавите инструментальный код, чтобы попытаться диагностировать причину сбоя вашего кода, они перестанут появляться, потому что этот добавленный код изменил время.
Никогда не делайте этого.