struct Node {
Node *next;
data_t val;
} *Top;
data_t pop()
{
Node *t, *x;
do{
t=top;
if(t==NULL)
return EMPTY;
x=t->next;
} while(!CAS(& Top, t, x));
return t-val;
}
上面的代码是pop操作的一个实现。如何在无锁(CAS)中计算堆栈的长度?