for (;;) { tuple->next.shared = dsa_pointer_atomic_read(head); if (dsa_pointer_atomic_compare_exchange(head, &tuple->next.shared, tuple_shared)) break; }