从类型为'std :: atomic <node *> :: __ pointer_type {aka Node *}'的rvalue初始化'Node *&amp;'类型的非const引用

时间:2017-10-13 14:28:31

标签: c++11 nonblocking lock-free

我有以下代码片段:

struct Node {
   int data;
   Node *next;
};

atomic<Node*> head;
atomic<Node*> temp1 = head.load();
..
Node *temp2 = new Node;
//initialise values
head.compare_exchange_strong(temp1, temp2);

但是,我收到以下错误:

从'std :: atomic :: __ pointer_type {aka Node *}'类型的右值开始,无效初始化'Node *&amp;'类型的非const引用。

我不知道哪个引用在这里是常量。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

简单的回答是temp1应该是Node *,而不是Atomic, 因为cmp / xchg有两个简单的类型变量。

但我真的不明白你想要实现的目标。 当然,如果您希望下一步被保护免受线程攻击,那么它应该在结构中声明为Atomic吗?