如何从std::atomic<T>中提取指针T?

How can I extract the pointer T from std::atomic<T>?

我有一些简单的class:

class List {
    List *next;
    int value;
};

还有一个std::atomic<List *> Ltag。如何从 Ltag 中提取实际的 List *? 我试过 Ltag->value = 80 但没有用。转换效果也不佳。

您可以利用 std::atomic 的转换运算符。

(*Ltag).value = 80;

或使用 load() 显式获取值。

Ltag.load()->value = 80;

PS:您正在使用 std::atomic 指针,这意味着指向的对象可能存在数据竞争。