zoukankan      html  css  js  c++  java
  • Coarse-Grained lock 粗粒度锁

    • 用一个锁Lock一组相关的对象
      • 有时,需要按组来修改多个对象.
      • 这样,在需要锁住其中一个的时候,必须连带地将其他的对象都上锁.
      • 为每一个对象都加上一个锁是很繁琐的.
      • 粗粒度锁是覆盖多个对象的单个锁.
        • 简化了加锁行为.
        • 且不必为了给它们加锁而加载所有对象.
    • 运行机制
      • 为一组对象建立一个控制点.
        • 使用乐观离线锁让组中每个对象共享一个版本号来建立一个控制点.
          • 增加这个版本号时,就成为一个锁住组中所有对象的共享锁.
          • 需要在模型中指定该组的每个对象.
          • 共享的悲观离线锁要求组中每个对象共享某种锁标记.
            • 通过这个锁标记来锁住它们.
            • 一个共享的版本对象就是最好的锁标记.
        • 作为数据修改的基本单位的一组相关对象可看成一个aggregate聚集.
          • 每个聚集有唯一的,提供了对集合中各成员访问的根对象.
          • 以及定义聚集中包含了什么的边界对象.
          • 锁住根对象的根锁提供了聚集的单一控制点.
          • 需要为聚集对象提供到根对象的导航方法.
    • 使用时机
      • 最明显的理由是为了满足业务需要.
      • 好处是以很小的代价来获取和释放锁.
    • Implicit Lock隐含锁
      • 允许框架或层超类型获取离线锁.
        • 必须的加锁认为不应该显示地由开发人员完成,而是隐含地由应用完成.
      • 运行机制
        • 实现隐含锁就是要分解代码.在APP框架中完成那些绝对不能忽略的锁机制.
        • 第一步是列出业务事务中那些任务必须在加锁情况下完成.
  • 相关阅读:
    python学习笔记之---面向对象的三大特性
    python学习笔记之---类的属性和方法的访问总结
    python学习笔记之--类的三种方法
    python学习笔记之--面向对象技术
    python学习笔记之--面向对象和面向过程
    整数反转
    逻辑运算&map函数&filter函数&reduce函数
    python整理&&集合学习
    python基本数据类型
    python基础&条件语句
  • 原文地址:https://www.cnblogs.com/robyn/p/3528316.html
Copyright © 2011-2022 走看看