16 atomics::type as_atomic;
30 node_type *
volatile node;
31 atomics::type as_atomic;
37 template <
typename T,
class TMemInterface >
struct class_alignment lock_free_node :
public TMemInterface
41 explicit operator void *()
const {
return reinterpret_cast<void *
>(
this); }
43 inline lock_free_node() { next.node =
nullptr; }
44 inline const T &load()
const {
return value; }
45 inline void store(
const T &_value) { value = _value; }
50 static_assert(
sizeof(T) <=
sizeof(
address),
"T must be a POD");
59 #pragma warning(disable : 4201) 63 atomic_node points_to;
66 atomics::type as_atomic[2];
74 data.access.ptr =
nullptr;
75 data.points_to.node =
nullptr;
82 value.data.access.as_atomic, value.data.points_to.as_atomic);
87 data.access.as_atomic = other.data.access.as_atomic;
88 data.points_to.node = other.data.points_to.node;
97 "size of atomic_lock_free_node_ptr is incorrect.");
Definition: lockfreenode.h:60
Class stl_allocator.
Definition: allocator.h:16
Definition: lockfreenode.h:26
bool compare_exchange_weak_128(volatile int64_t _data[], int64_t _comperand[], int64_t _value_hi, int64_t _value_lo)
Compares the exchange weak 128.
Definition: atomics.h:108
Definition: lockfreenode.h:14
Definition: lockfreenode.h:24
Definition: lockfreenode.h:19
Definition: lockfreenode.h:55