• Coarse-Grained lock 粗粒度锁


    • 用一个锁Lock一组相关的对象
      • 有时,需要按组来修改多个对象.
      • 这样,在需要锁住其中一个的时候,必须连带地将其他的对象都上锁.
      • 为每一个对象都加上一个锁是很繁琐的.
      • 粗粒度锁是覆盖多个对象的单个锁.
        • 简化了加锁行为.
        • 且不必为了给它们加锁而加载所有对象.
    • 运行机制
      • 为一组对象建立一个控制点.
        • 使用乐观离线锁让组中每个对象共享一个版本号来建立一个控制点.
          • 增加这个版本号时,就成为一个锁住组中所有对象的共享锁.
          • 需要在模型中指定该组的每个对象.
          • 共享的悲观离线锁要求组中每个对象共享某种锁标记.
            • 通过这个锁标记来锁住它们.
            • 一个共享的版本对象就是最好的锁标记.
        • 作为数据修改的基本单位的一组相关对象可看成一个aggregate聚集.
          • 每个聚集有唯一的,提供了对集合中各成员访问的根对象.
          • 以及定义聚集中包含了什么的边界对象.
          • 锁住根对象的根锁提供了聚集的单一控制点.
          • 需要为聚集对象提供到根对象的导航方法.
    • 使用时机
      • 最明显的理由是为了满足业务需要.
      • 好处是以很小的代价来获取和释放锁.
    • Implicit Lock隐含锁
      • 允许框架或层超类型获取离线锁.
        • 必须的加锁认为不应该显示地由开发人员完成,而是隐含地由应用完成.
      • 运行机制
        • 实现隐含锁就是要分解代码.在APP框架中完成那些绝对不能忽略的锁机制.
        • 第一步是列出业务事务中那些任务必须在加锁情况下完成.
  • 相关阅读:
    Linux 实战
    bash 环境配置及脚本
    Linux vi/vim
    Linux 正则表达式
    001 KNN分类 最邻近算法
    测序名解
    流式细胞术
    CircRNA 环化RNA
    笔记总结
    Flume
  • 原文地址:https://www.cnblogs.com/robyn/p/3528316.html
Copyright © 2020-2023  润新知