惰性链表

惰性链表与无所链表类似,使用marked域用于标识是否仍然在链表中,可以避免很多有问题的情况。(false代表在链表中,反之则不在)。

删除过程包含逻辑删除与物理删除(与无锁链表一致),逻辑删除表示仅将marked修改为true,物理删除表示从链表完全删除。

删除的通用做法,对于pred和cur都要加锁(pred == previous)

无锁链表

使用CompareAndSet()方法,实现了add()和remove()方法。看上去很简单,但是印象不深刻….一种非常奇怪的感觉233。