Для освоения некоторых технологий вы должны знать, как это сделать на одном уровне абстракции ниже. В случае многопоточного программирования полезно знать о примитивах синхронизации.
Вот вопрос, как реализован Lock (Monitor) в .NET?
Меня интересуют такие моменты:
- использует ли он объекты ОС?;
- требуется ли режим пользователя или режим ядра?;
- что накладные расходы для потоков, которые ждут блокировки?;
- в каких случаях может быть нарушена очередь на очереди, ожидающая блокировки?
Обновлено:
"Если более чем один поток поддерживает блокировку, они ставятся в очередь на" готовую очередь "и предоставляют блокировку на основе" первым пришел, первым обслужен ". Примечание: Нюансы в поведении Windows и CLR означают, что справедливость иногда может быть нарушена очередь." [С# 4.0 в двух словах, Джозеф Альбахари] Так вот об этом я и спрашиваю в последнем вопросе о "нарушенной очереди".