无锁方案 CAS
func cas(p : pointer to int, old : int, new : int) returns bool {
if *p != old {
return false
}
*p = new
return true
}function add(p : pointer to int, a : int) returns int {
done = false
// 这个是经典范式,自旋操作
while not done {
value = *p // Even this operation doesn't need to be atomic.
done = cas(p, value, value + a)
}
return value + a
}原子类
利用 CAS 来实现单例模式
Disruptor 中的无锁算法
最后更新于