原子操作
原子操作在操作内存的时候不可以被打断
原子读:不会读一半被打断,写了其他值进去
原子写:不会因为进线程的调度问题,覆盖别的线程写的值
CAS
Compare and swap
读旧值,做更改,写的时候检查值是不是被改变了,如果值发生改变,则证明有其他并发任务对数据结构做了改变
ABA 问题
简而言之就是其他线程在本线程写之前把值改成B,再改回A,回造成当前线程的认知错误。
避免ABA问题:使用double word CAS
别迷信无锁化
无锁化性能未必好
原子操作在操作内存的时候不可以被打断
原子读:不会读一半被打断,写了其他值进去
原子写:不会因为进线程的调度问题,覆盖别的线程写的值
Compare and swap
读旧值,做更改,写的时候检查值是不是被改变了,如果值发生改变,则证明有其他并发任务对数据结构做了改变
ABA 问题
简而言之就是其他线程在本线程写之前把值改成B,再改回A,回造成当前线程的认知错误。
避免ABA问题:使用double word CAS
无锁化性能未必好
本文标题:2019-01-06 #关于无锁化#
本文链接:https://www.haomeiwen.com/subject/hvoerqtx.html
网友评论