Skip to content

Commit

Permalink
Update list_teardown_pop.cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
archibate authored Oct 18, 2024
1 parent 8c890ba commit 73ce6ce
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions slides/atomic/list_teardown_pop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,19 +61,19 @@ struct MyList {
Node *new_node = new Node;
new_node->value = value;

Node *old_head = head.load(std::memory_order_relaxed);
Node *old_head = head.load(std::memory_order_consume);
do
new_node->next = old_head;
// store barrier
while (!head.compare_exchange_weak(old_head, new_node, std::memory_order_release, std::memory_order_relaxed));
while (!head.compare_exchange_weak(old_head, new_node, std::memory_order_release, std::memory_order_consume));
}

int pop_back() {
Node *old_head = head.load(std::memory_order_relaxed);
Node *old_head = head.load(std::memory_order_consume);
do {
if (old_head == nullptr)
return -1;
} while (!head.compare_exchange_weak(old_head, old_head->next, std::memory_order_acquire, std::memory_order_relaxed));
} while (!head.compare_exchange_weak(old_head, old_head->next, std::memory_order_acquire, std::memory_order_consume));
// load barrier
int value = old_head->value;
delete old_head;
Expand Down

0 comments on commit 73ce6ce

Please sign in to comment.