Atomic Operation and Atomic Command

风行水上 @ 2014-02-28 16:51:08
标签:

    Atomic Operation

    世界上不是只有一个人,计算计上也不是只有一个程序在运行。有并存,就有竞争。有竞争,就需要避免或解决。

    有些操作需要是原子级的(Atomic),比如两个进程都对数据库进行一个赋值操作 set key $value。但我们不希望两个操作都成功。

    这个问题的解决可以从两个角度看。

    对于接受操作请求的一方来说:

    • 需要保证要进行的操作是atomic的,从而对于后一个操作返回失败

    对于发起操作请求的一方来说:

    • 或者直接发起操作,根据返回值决定下一步
    • 或者先尝试获得一个锁,即所谓的lock

    对于需要获得lock的情况,如何unlock和清除陈旧无效的lock也是需要细心设计的。否则有可能发生死锁(deadlock)。

    当然也有一些应用场景,其实是不需要考虑unlock的,或者说unlock是通过别的方法来处理的——比如简单忽略。

    Atomic Command

    Lock/Unlock

    标签:

      分享到:
      comments powered by Disqus

      24/27ms