Никто не упомянул о плюсах и минусах неявной синхронизации.
Основным «за» является, конечно, то, что программист может написать все что угодно и не беспокоиться о синхронизации.
Основной «минус» в том, что это занимает много времени.Неявная синхронизация должна проходить через кеширование как минимум (как вы могли подумать) в первом кеше, который является общим для обоих ядер.Неправильно!На компьютере может быть установлено несколько физических процессоров, поэтому синхронизация не может остановиться в кеше, она должна идти до ОЗУ.Если вы хотите выполнить синхронизацию, вам также необходимо синхронизировать данные с другими устройствами, которые должны синхронизироваться с памятью, т. Е. С любым устройством управления шинами.Устройствами мастеринга шины могут быть карты на классической шине PCI, и они могут работать на частоте 33 МГц, поэтому неявная синхронизация должна будет подождать и их, чтобы подтвердить, что запись или чтение в определенном месте ОЗУ нормально.Мы говорим о 100-кратной разнице только в тактовой частоте между ядром и самой медленной шиной, а самой медленной шине требуется несколько собственных циклов шины для надежной реакции.Поскольку синхронизация ДОЛЖНА быть надежной, в противном случае она бесполезна.
Таким образом, при выборе между реализацией электроники для неявной синхронизации (которую в любом случае лучше оставить явно программисту), и более быстрой системой, которая может синхронизироваться приЕсли необходимо, ответ очевиден.
Явными ключами синхронизации являются префикс LOCK и инструкция XCHG mem, reg.
Можно сказать, что неявная синхронизация подобна обучающим колесам: вы не будетеупасть на землю, но вы не можете идти особенно быстро или поворачивать особенно быстро.Скоро вы устанете и захотите перейти к реальным вещам.Конечно, вам будет больно, но в процессе вы либо научитесь, либо бросите.