Я прочитал много материалов о потоковом и всех задействованных механизмах синхронизации. Я также понимаю опасности не делать это должным образом.
Я просто смотрел это видео PDC 2009 о Parallelism и Concurrency, и здесь еще раз упоминается, что "блокировки являются дорогостоящая операция". Я сейчас встретил такую фразу в разных текстах, книгах, и я слышал, что эксперты в этой области тоже говорят об этом.
Мне было интересно, что именно так дорого о получении блокировки (мьютекс или семафор)? Это факт, что он вызывает инструкцию LOCK#
на уровне Ассемблера?
Это факт, что для получения блокировки требуется вызов ядра в ОС?
Почему блокировки считаются дорогостоящей операцией? "Дорого" - довольно относительный термин, поэтому, если мы сравним с созданием нового потока (который требует установки стека потоков и т.д.), Насколько дорого стоит получение блокировки на самом деле?
Что происходит под обложками?
Я предполагаю, что это не может быть так дорого, потому что я уверен, что для Windows (например) для запуска, сотни механизмов блокировок/синхронизации должны использоваться все время.
Может ли кто-нибудь уточнить?
ПРИМЕЧАНИЕ. Мне просто интересно, я знаю, как работает потоки, и я тоже не хочу делать какую-то глупую оптимизацию.