Как на самом деле работают мьютексы?

Идея мьютексов состоит в том, чтобы разрешить только одному потоку доступ к разделу памяти в любой момент времени. Если один поток блокирует мьютекс, любые другие попытки блокировки будут блокироваться до тех пор, пока не будет разблокирована первая. Однако как это реализуется? Чтобы заблокировать себя, мьютекс должен где-то установить бит, говорящий о том, что он заблокирован. Но что, если второй мьютекс читает одновременно с записью первого?. Хуже того, что, если они оба заблокируют мьютекс одновременно? Мьютекс поддастся той же проблеме, которую он призван предотвратить.

Как на самом деле работают мьютексы?

21
задан Joel 2 August 2012 в 03:17
поделиться