我有以下代码片段:
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引用。
我不知道哪个引用在这里是常量。任何帮助将不胜感激。
答案 0 :(得分:1)
简单的回答是temp1应该是Node *,而不是Atomic, 因为cmp / xchg有两个简单的类型变量。
但我真的不明白你想要实现的目标。 当然,如果您希望下一步被保护免受线程攻击,那么它应该在结构中声明为Atomic吗?