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