View source code Display the source code in core/atomic.d from which this page was generated on github. Improve this page Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone. Page wiki View or edit the community-maintained wiki page associated with this page.

Module core.atomic

The atomic module provides basic support for lock-free concurrent programming.

Functions

Name Description
atomicFence Inserts a full load/store memory fence (on platforms that need it). This ensures that all loads and stores before a call to this function are executed before any loads and stores after the call.
atomicLoad Loads 'val' from memory and returns it. The memory barrier specified by 'ms' is applied to the operation, which is fully sequenced by default. Valid memory orders are MemoryOrder.raw, MemoryOrder.acq, and MemoryOrder.seq.
atomicOp Performs the binary operation 'op' on val using 'mod' as the modifier.
atomicStore Writes 'newval' into 'val'. The memory barrier specified by 'ms' is applied to the operation, which is fully sequenced by default. Valid memory orders are MemoryOrder.raw, MemoryOrder.rel, and MemoryOrder.seq.
cas Stores 'writeThis' to the memory referenced by 'here' if the value referenced by 'here' is equal to 'ifThis'. This operation is both lock-free and atomic.

Enums

Name Description
MemoryOrder Specifies the memory ordering semantics of an atomic operation.

Authors

Sean Kelly, Alex Rønne Petersen

License

Boost License 1.0

Comments