Files
jeanlemotan 48ab06b1d9 First
2024-07-02 18:10:39 +02:00

37 lines
1.5 KiB
C

///////////////////////////////////////////////////////////////////////////////
// Copyright (c) Electronic Arts Inc. All rights reserved.
///////////////////////////////////////////////////////////////////////////////
#if defined(EA_PRAGMA_ONCE_SUPPORTED)
#pragma once // Some compilers (e.g. VC++) benefit significantly from using this. We've measured 3-4% build speed improvements in apps as a result.
#endif
/// Standalone atomic functions
/// These act the same as the class functions below.
/// The T return values are the previous value, except for the
/// AtomicFetchSwap function which returns the swapped out value.
///
/// T AtomicGetValue(volatile T*);
/// T AtomicGetValue(const volatile T*);
/// void AtomicSetValue(volatile T*, T value);
/// T AtomicFetchIncrement(volatile T*);
/// T AtomicFetchDecrement(volatile T*);
/// T AtomicFetchAdd(volatile T*, T value);
/// T AtomicFetchSub(volatile T*, T value);
/// T AtomicFetchOr(volatile T*, T value);
/// T AtomicFetchAnd(volatile T*, T value);
/// T AtomicFetchXor(volatile T*, T value);
/// T AtomicFetchSwap(volatile T*, T value);
/// T AtomicFetchSwapConditional(volatile T*, T value, T condition);
/// bool AtomicSetValueConditional(volatile T*, T value, T condition);
#if defined(EA_COMPILER_MSVC)
#include <eathread/internal/eathread_atomic_standalone_msvc.h>
#elif defined(EA_COMPILER_GNUC) || defined(EA_COMPILER_CLANG)
#include <eathread/internal/eathread_atomic_standalone_gcc.h>
#else
#error unsupported platform
#endif