这是线性化点吗?

时间:2019-02-06 23:46:46

标签: java concurrency

说我在无锁,线程安全的Stack实现中具有以下方法:

public boolean push(T value) {
    Node node = new Node(value);
    do {
        node.next = head.get();
    } while (!head.compareAndSet(node.next, node)); // Linearization Point
    operations.incrementAndGet();
    return true;
}

标记线是否被视为线性化点?

我的印象是线性化点是一个奇异的原子点,在该点上并发对象的状态已发生变化,以反映特定方法调用的预期效果。如果真是这样,我对compareAndSet()的调用是否确实是线性化点就产生了冲突。似乎operations上存在增量操作会引入第二个原子点,在该原子点上并发对象的状态应被突变-这与我目前对线性化的含义的理解背道而驰。

0 个答案:

没有答案