«Блокировка» занимает процессорное время? - PullRequest
8 голосов
/ 21 февраля 2012

У меня 6 тем.Один из потоков входит в какую-то область и включает «блокировку», а все остальные потоки ожидают и хотят войти в ту же область.

Теперь, другие потоки получат процессорное время?Есть ли другой поток в расписании потоков?Я понимаю, что все остальные потоки находятся в состоянии ожидания - но ЦП попытается заставить поток продолжить и попытаться войти в область (даже если область не доступна)

Ответы [ 2 ]

11 голосов
/ 21 февраля 2012

При попытке ввести уже снятую блокировку, потоки сначала спинлок на некоторое время, и, наконец, приостанавливают и переходят в состояние ожидания.

Они по-прежнему сжигают процессорное время, пока они вращаются, но больше не после ожидания.

0 голосов
/ 21 февраля 2012

Это не так, как работает замок. Вы больше никому не дадите «время процессора». Если вы блокируете, вы можете ввести периоды ожидания и потенциально взаимоблокировки, когда потоки ждут друг друга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...