2019-01-06 #关于无锁化#

原子操作

原子操作在操作内存的时候不可以被打断
原子读:不会读一半被打断,写了其他值进去
原子写:不会因为进线程的调度问题,覆盖别的线程写的值

CAS

Compare and swap
读旧值,做更改,写的时候检查值是不是被改变了,如果值发生改变,则证明有其他并发任务对数据结构做了改变
ABA 问题
简而言之就是其他线程在本线程写之前把值改成B,再改回A,回造成当前线程的认知错误。
避免ABA问题:使用double word CAS

别迷信无锁化

无锁化性能未必好

你可能感兴趣的:(2019-01-06 #关于无锁化#)