Remix.run Logo
wat10000 6 hours ago

They generally map directly to concepts in the CPU architecture. On many architectures, load/store instructions are already guaranteed to be atomic as long as the address is properly aligned, so atomic load/store is just a load/store. Non-relaxed ordering may emit a variant load/store instruction or a separate barrier instruction. Compare-exchange will usually emit a compare and swap, or load-linked/store-conditional sequence. Things like atomic add/subtract often map to single instructions, or might be implemented as a compare-exchange in a loop.

The exact syntax and naming will of course differ, but any language that exposes low-level atomics at all is going to provide a pretty similar set of operations.

jitl 5 hours ago | parent | next [-]

yeah that’s why i was surprised by grandparent saying the atomics were c++ specific

dalvrosa 6 hours ago | parent | prev [-]

100% agree +1