Реализация взаимного исключения описанным выше способом имеет существенный недостаток: в течение времени, когда один поток находится в критической секции, другой поток, которому требуется тот же ресурс, получив доступ к процессору, будет непрерывно опрашивать блокирующую переменную, бесполезно тратя выделяемое ему процессорное время, которое могло бы быть использовано для выполнения какого-нибудь другого потока. Для устранения этого недостатка во многих ОС предусматриваются специальные системные вызовы для работы с критическими секциями.
Рисунок 6. Реализация взаимного исключения с использованием системных функций входа в критическую секцию и выхода из нее
На рисунке показан бред. Не понимаю, зачем нужна какая-то блокирующая переменная при использовании вызовов *CriticalSection.