Minnesbarriär Memory fence
En instruktion som begränsar hur minnesoperationer får flyttas om runt den. Behövs eftersom både kompilatorn och processorn kastar om ordningen bakom ryggen på dig.
Omordningen är osynlig i entrådad kod — resultatet blir detsamma — och förödande i flertrådad. Det klassiska felet är att publicera en pekare till ett objekt innan objektets fält hunnit bli synliga för en annan kärna, varpå den läser skräp ur ett objekt som ur dess synvinkel aldrig initierats. Barriärerna kommer i varianter som motsvarar minnesordningarna: en acquire-barriär hindrar senare läsningar från att flyttas fram, en release-barriär hindrar tidigare skrivningar från att flyttas bak, och en full barriär stoppar allt. Två saker överraskar. Kompilatorns och hårdvarans omordning är skilda problem som båda måste hanteras, vilket är varför volatile inte är ett trådverktyg. Och x86:s starka ordning gör att felaktig kod ofta fungerar där och går sönder på ARM.