Здравствуйте, snaphold, Вы писали:
S>сначала вроде понял и уложил в памяти а потом вот это и непонятно тогда зачем мемори барьер нужен если ядря знают про кэши других ядер?
Тебя обманули: синхронизация кэшей между ядрами существует, но кэши тут не при чём. Процессор может переупорядочивать инструкции, и в этом проблема. Существуют специальные инструкции, запрещающие переупорядочивание доступа к памяти:
1)sfence — store fence (запрет переупорядочивания записи
2)lfence — load fence (запрет переупорядочивания загрузки)
3)mfence — full fence (запрет переупорядочивания и записи и загрузки)
барьер ставит одну из них.
Всё сказанное выше — личное мнение, если не указано обратное.