43#define LASS_UTIL_ATOMIC_HAVE_POOR_MANS_IMPL
52class LASS_DLL PoorMansGlobalAtomicLock
55 PoorMansGlobalAtomicLock();
56 ~PoorMansGlobalAtomicLock();
59template <
size_t byteSize>
60struct AtomicOperations
62 LASS_META_ASSERT(byteSize == 1 || byteSize == 2 || byteSize == 4 || byteSize == 8, bytesize_should_be_1_2_4_or_8);
65 static bool compareAndSwap(
volatile T& dest, T expectedValue, T newValue)
67 PoorMansGlobalAtomicLock LASS_UNUSED(lock);
69 if (old != expectedValue)
77 template <
typename T1,
typename T2>
inline
78 static bool LASS_CALL compareAndSwap(
79 volatile T1& dest1, T1 expected1, T2 expected2, T1 new1, T2 new2)
81 PoorMansGlobalAtomicLock LASS_UNUSED(lock);
82 volatile T2& dest2 = *
reinterpret_cast<volatile T2*
>((&dest1) + 1);
83 if (dest1 != expected1 || dest2 != expected2)
92 template <
typename T>
inline
93 static void LASS_CALL increment(
volatile T& value)
95 PoorMansGlobalAtomicLock LASS_UNUSED(lock);
99 template <
typename T>
inline
100 static void LASS_CALL decrement(
volatile T& value)
102 PoorMansGlobalAtomicLock LASS_UNUSED(lock);
#define LASS_DLL
DLL interface: import or export symbols?
general utility, debug facilities, ...
Library for Assembled Shared Sources.