• 简论数据库乐观悲观锁与并发编程中的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 

  • 相关阅读:
    餐盘模拟 数据结构及其描述
    游戏心理相关
    对于问题的认知过程
    程序语言中的基础理解
    游戏聊天记录
    游戏设定
    游戏技能学习
    游戏数值学习
    游戏的系统化思维
    游戏存储数据随笔
  • 原文地址:https://www.cnblogs.com/shijiaqi1066/p/5783205.html
Copyright © 2020-2023  润新知