//@cond
node()
- : next( nullptr )
- , data( nullptr )
- {}
+ {
+ next.store( nullptr, atomics::memory_order_release );
+ data.store( marked_data_ptr(), atomics::memory_order_release );
+ }
node( value_type * pVal )
- : next( nullptr )
- , data( pVal )
- {}
+ {
+ next.store( nullptr, atomics::memory_order_release );
+ data.store( marked_data_ptr( pVal ), atomics::memory_order_release );
+ }
//@endcond
};
while ( true ) {
node_type * pCur = pPrev->next.load( memory_model::memory_order_relaxed );
- if ( pCur == pCur->next.load( memory_model::memory_order_relaxed )) {
+ if ( pCur == pCur->next.load( memory_model::memory_order_acquire )) {
// end-of-list
pos.pPrev = pPrev;
pos.pCur = pCur;
while ( true ) {
node_type * pCur = pPrev->next.load( memory_model::memory_order_relaxed );
- if ( pCur == pCur->next.load( memory_model::memory_order_relaxed ) ) {
+ if ( pCur == pCur->next.load( memory_model::memory_order_acquire )) {
// end-of-list
pos.pPrev = pPrev;
pos.pCur = pCur;