atomic_store(), atomic_store_explicit()

QNX SDP8.0C Library ReferenceAPIDeveloper

Atomically set the value of an atomic object (C11)

Synopsis:

#include <stdatomic.h>

void atomic_store( volatile A *obj,
                  C desired );

void atomic_store_explicit( volatile A *obj,
                            C desired,
                            memory_order order );

Arguments:

obj
A pointer to the atomic object (see the atomic_* types) whose value you want to set.
desired
The value for the object. The C represents the non-atomic data type that corresponds to the atomic object.
order
(atomic_store_explicit() only) The memory_order to use for the operation. This must be memory_order_relaxed, memory_order_release, or memory_order_seq_cst.

Library:

  • If the atomic function is lock-free (see atomic_is_lock_free()), no extra library is required.
  • If the function isn't lock-free, you need to link against libatomic. Use the -l atomic option to qcc to link against this library.

Description:

The atomic_store() and atomic_store_explicit() functions are generic functions that atomically set the given atomic object to the given value. The atomic_store() function orders memory access according to memory_order_seq_cst; atomic_store_explicit() orders them as specified by order.

The implementation of atomic functions may depend on the architecture. For more information, see LL/SC vs LSE atomic operations in the description in Building Embedded Systems of the cpuinfo area of the system page.

Classification:

C11

Safety:
Cancellation pointNo
Signal handlerRead the Caveats
ThreadYes

Caveats:

If this function is lock-free (see atomic_is_lock_free()), it's safe to call it from a signal handler.

Page updated: