Класс Monitor в блоках C# вращается (режим пользователя) или останавливает поток (режим ядра)? - PullRequest
1 голос
/ 15 апреля 2020

Является ли класс монитора в C# блоках путем вращения (пользовательский режим) или остановки потока (режим ядра)?

Я не смог найти ответ на этот вопрос в документация .

Я четко понимаю, как монитор взаимодействует с объектами. Он использует массив блоков syn c, созданный CLR, и просто манипулирует полем блока syn c объекта, чтобы указать на указанный c syn c блок. Тогда блок syn c будет содержать идентификатор потока, который принял блокировку, счетчик рекурсии (количество раз, которое поток просматривал). И Monitor.Enter будет блокировать другие потоки, пока счетчик рекурсии не будет равен 0.

Но я не понимаю, как произойдет блокирование. Будут ли заблокированные (ожидающие) потоки переходить в режим ядра и останавливаться там, или они просто вращаются вокруг траты ЦП?

...