文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>锁的说明-转老杨的

锁的说明-转老杨的

时间:2008-12-09  来源:Coolriver

我们都知道S锁与X锁共有四种组合情况,S-S,S-X,X-S,X-X,在封锁机制的情况下,只有S-S是互容的,其它的三个都是互斥的。我们来假象,为什么会出现这三种情况?在很久很久以前,那时候还没有锁,出现以下的三个场景。

  场景1:“写-写”冲突,丢失更新:

  老杨有一个账号,里面有100块钱,老叶准备给我存5块,小马哥准备给我存10块。假设如下步骤:

  1.老叶来到柜台,说要给老杨存钱,小姑娘1看了下账本,现有100。

  2.小马哥来到柜台,说要给老杨存钱,小姑娘2看了下账本,现有100。

  3.老叶存了5块,小姑娘1大笔一画(写操作),老杨的帐户上有了105.

  4.小马哥存了10块,小姑娘2算了一下,100+10等于110,于是老杨的账号更新为110块(写操作)。

  因此,钱蒸发了5块,原因是后一次写覆盖了前一次写。这种情况是:丢失更新。

  场景2:“写-读”冲突,读脏:

  老杨要泡老婆,可是银行卡里面只有100块钱,泡老婆总得吃点浪漫的,钱肯定不够,于是打电话给老叶让打500块钱,于是出现下面的步骤:

  1.老杨查了下自己的账号,发现只有100块钱,于是打电话让老叶打500进去。

  2.老叶在柜台操作打了500(写操作)。

  3.老杨查了下,果然是600了(读操作),于是带着老婆去吃西餐。

  4.老叶的女朋友正好在银行看到老叶,问老叶在干什么,老叶实话实说,老叶的女朋友很气愤,说取消了,回去跪地板,居然敢藏私房钱。

  5.老杨吃完饭,去付钱,被告之卡里面只有100块钱,后来因为老杨人品好,暂时欠账,不然就是刚喝王八汤,又吃霸王餐。

  这个情况本质是:写-读冲突,称为读脏,因为前面一个还没提交,也就是还不是自己的钱,还没漂白。

  场景3:“读-写”冲突,不可重复读:

  老杨,老叶,小马哥去吃饭,都不想请客,于是说查下银行卡,谁的钱多谁请客,查了下老杨的账号,果然里面只有100块钱(读操作)。老叶聪明,于是出现下面一个场景。

  1.吃完饭,到了要付账的时候,老叶向叶弟媳使眼色,弟妹打了个ok的手势(写操作)。

  2.老叶说,我们再查下账号,谁的钱多,谁请。

  3.于是一查,老杨的变成了600,居然是最有钱的,于是老杨请客了。(也许有人说老叶傻,老叶不傻,在没有规则的世界里面,老叶回滚操作已经不是第一次做了)。

  这个问题的本质是:读和写冲突,两次读的数据不一样。

  于是老杨很生气,每次都被耍,于是下一篇文章里面,老杨变得比现在聪明了一点点,不过还是继续被耍。请看下一篇,锁的初级登场。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载