aru*_*zhi 6 c java java.util.concurrent concurrent-programming compare-and-swap
如何从地址窃取2个MSB进行原子操作?我正在努力做一个单词CAS
一个例子
public class Node
{
long key;
long value;
Node lchild; // format is flag1,flag2,address
Node rchild; // format is flag1,flag2,address
}
public void createNode()
{
Node n1 = new Node(); //this should create a node with format 0,0,address1
}
public void setFlag1(Node n1)
{
Now the new address should be in format 1,0,address1
}
public void setFlag2(Node n1)
{
Now the new address should be in format 0,1,address1
}
Run Code Online (Sandbox Code Playgroud)
AtomicReference如果我只需要一个额外的标志,可以使用.
AtomicStampedReference可以使用,但它没有效率,因为它创建了一个包含timeStamp和引用的额外框.
在从指针窃取位时讨论了C中的类似问题