Powerpc has more powerful primitives available: "lwarx" and "stwcx"
lwarx loads a value from memory but remembers the location. Any other thread or cpu that touches that location will cause the "stwcx", a conditional store instruction, to fail.
So the lwarx /stwcx combo allows you to implement atomic increment / decrement, compare and swap, and more powerful atomic operations like "atomic increment circular buffer index"
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…