Skip to content

C11 Atomics Reference

Header:

#include <stdatomic.h>

atomic_init

Initialize atomic object.

atomic_init()

atomic_load

Read atomic value.

atomic_load()

atomic_load_explicit()

atomic_store

Store atomic value.

atomic_store()

atomic_store_explicit()

atomic_fetch_add

Atomic increment.

atomic_fetch_add()

atomic_exchange

Replace value atomically.

atomic_exchange()

atomic_compare_exchange_strong

Compare and swap.

CAS

Typical:

expected=0

CAS

success

fail

Memory Orders

memory_order_relaxed
memory_order_acquire
memory_order_release
memory_order_seq_cst

Common Pitfalls

Wrong:

atomic_load()

if()

atomic_store()

Use CAS instead.


  • day60-atomics-memory-ordering