zoukankan      html  css  js  c++  java
  • 简论数据库乐观悲观锁与并发编程中的CAS

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/ShiJiaqi。

    http://www.cnblogs.com/shijiaqi1066/p/5783205.html 

    1. 数据库悲观锁

    加锁;

        操作(增删改查);

    解锁;

    2. 数据库乐观锁

    updateset 列 = newValue where [条件] and 列 = 旧值;

    注意:set 与 where 是合并在一起的,即原子执行的

    解决ABA问题

    对每张表引入版本号version

    改进:

     updateset 列 = newValue , version = oldVersion+1  where [条件] and version = oldVersion; 

    update失败怎么办?读取当前值,再次update,直到指定次数,或永远。

    3. CAS

    compare and swap,swap的意思虽然为“交换”,但实际编程中swap其实可以理解为set。

    相当于数据库乐观锁中使用的update语句。比较与交换是一个连在一起的操作,即比较交换是一个原子操作。

    比较失败怎么办?不交换,自旋

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/ShiJiaqi。

    http://www.cnblogs.com/shijiaqi1066/p/5783205.html 

  • 相关阅读:
    函数之装饰器
    前端笔记之css
    前端笔记之html
    python之函数
    python之文件操作
    python基础知识
    ovirt一种基于kvm的开源虚拟化软件
    python2与3的区别
    TP框架设置验证码
    js原生子级元素阻止父级元素冒泡事件
  • 原文地址:https://www.cnblogs.com/shijiaqi1066/p/5783205.html
Copyright © 2011-2022 走看看