Суть атомного общего указателяC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Суть атомного общего указателя

Сообщение Anonymous »

Я искал несколько примеров и вариантов использования атомарных общих указателей и наткнулся на реализацию стека без блокировки. Эта реализация использует общий указатель для хранения адреса следующего узла в объявлении узла, а также заголовок хранится как атомарный общий указатель. Пожалуйста, взгляните на пример кода ниже

Код: Выделить всё

template 
struct Stack {
struct Node {
T t;
shared_ptr next;
};

atomic head;

void push_front(T t) {
auto p = make_shared(std ::move(t), head.load());
while (!head.compare_exchange_weak(p->next, p)) {}
}

optional pop_front() {
auto p = head.load();
while (p != nullptr && !head.compare_exchange_weak(p, p->next)) {}
if (p != nullptr)
return {std ::move(p->t)};
else
return {};
}
};
Я проверил код несколько раз и попытался вникнуть в детали, но так и не смог найти преимущества использования атомарной общей точки вместо атомарного необработанного указателя. См. также мою версию ниже. Я не мог разобраться в плюсах и минусах.

Код: Выделить всё

template 
struct Stack {
struct Node {
T t;
Node* next;
};

std::atomic head;

void push_front(T t) {
auto p = new Node(std::move(t), head.load());
while (!head.compare_exchange_weak(p->next, p)) {}
}

std::optional pop_front() {
auto p = head.load();
while (p != nullptr && !head.compare_exchange_weak(p, p->next)) {}
if (p != nullptr)
return { std::move(p->t) };
else
return {};
}

};
Может ли кто-нибудь объяснить мне, в чем преимущество атомарного общего указателя?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ed-pointer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Суть атомного общего указателя
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • В чем суть «разоблачения» API, особенно в Google Cloud Endpoint?
    Anonymous » » в форуме JAVA
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Какова правильная и оптимальная реализация атомного_ref и атомного с битами заполнения?
    Anonymous » » в форуме C++
    0 Ответы
    64 Просмотры
    Последнее сообщение Anonymous
  • Скопировать конструктор в классе со многими членами, удаленными из -за атомного члена
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Удовлетворение атомного ограничения '__ -конструктивного ... »зависит от себя
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»