装逼名词-ABA

Posted 笨鸟居士的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装逼名词-ABA相关的知识,希望对你有一定的参考价值。

今天看wiki,看到一个提到什么什么会陷入 race condition & ABA problem。丫的我没听过ABA呀,那么我去搜了一下,如下:

http://www.bubuko.com/infodetail-317006.html

《SpinLock 自旋锁, CAS操作(Compare & Set) ABA Problem》

 

ABA解释如下:

所谓ABA(见维基百科的ABA词条),问题基本是这个样子:

  1. 进程P1在共享变量中读到值为A
  2. P1被抢占了,进程P2执行
  3. P2把共享变量里的值从A改成了B,再改回到A,此时被P1抢占。
  4. P1回来看到共享变量里的值没有被改变,于是继续执行。

ABA问题最容易发生在lock free 的算法中的,CAS首当其冲,因为CAS判断的是指针的地址。

如果这个地址被重用了呢,问题就很大了。

你拿着一个装满钱的手提箱在飞机场,此时过来了一个火辣性感的美女,然后她很暖昧地挑逗着你,并趁你不注意的时候,

把用一个一模一样的手提箱和你那装满钱的箱子调了个包,然后就离开了,你看到你的手提箱还在那,于是就提着手提箱去赶飞机去了。

 

这就是ABA的问题。

 

 

CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。

如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。

 

以上是关于装逼名词-ABA的主要内容,如果未能解决你的问题,请参考以下文章

ABA的动词

SWIFTIBANABA......境外汇款的专业名词你了解吗?

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

PAT Basic 1078

1078. 字符串压缩与解压 (20)

PAT 1078. 字符串压缩与解压