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

    • 用一个锁Lock一组相关的对象
      • 有时,需要按组来修改多个对象.
      • 这样,在需要锁住其中一个的时候,必须连带地将其他的对象都上锁.
      • 为每一个对象都加上一个锁是很繁琐的.
      • 粗粒度锁是覆盖多个对象的单个锁.
        • 简化了加锁行为.
        • 且不必为了给它们加锁而加载所有对象.
    • 运行机制
      • 为一组对象建立一个控制点.
        • 使用乐观离线锁让组中每个对象共享一个版本号来建立一个控制点.
          • 增加这个版本号时,就成为一个锁住组中所有对象的共享锁.
          • 需要在模型中指定该组的每个对象.
          • 共享的悲观离线锁要求组中每个对象共享某种锁标记.
            • 通过这个锁标记来锁住它们.
            • 一个共享的版本对象就是最好的锁标记.
        • 作为数据修改的基本单位的一组相关对象可看成一个aggregate聚集.
          • 每个聚集有唯一的,提供了对集合中各成员访问的根对象.
          • 以及定义聚集中包含了什么的边界对象.
          • 锁住根对象的根锁提供了聚集的单一控制点.
          • 需要为聚集对象提供到根对象的导航方法.
    • 使用时机
      • 最明显的理由是为了满足业务需要.
      • 好处是以很小的代价来获取和释放锁.
    • Implicit Lock隐含锁
      • 允许框架或层超类型获取离线锁.
        • 必须的加锁认为不应该显示地由开发人员完成,而是隐含地由应用完成.
      • 运行机制
        • 实现隐含锁就是要分解代码.在APP框架中完成那些绝对不能忽略的锁机制.
        • 第一步是列出业务事务中那些任务必须在加锁情况下完成.
  • 相关阅读:
    c++之运算符
    C++开源库,欢迎补充。
    C++ 图像处理类库
    C++开源代码项目汇总
    视频会议及流媒体十大开源项目
    多媒体的框架
    C++开发资源汇总
    Juce之旅-第一个例子(图形窗口)
    Juce-强大的开源类库
    图像处理库的比较:OpenCV,FreeImage,CImg,CxImage
  • 原文地址:https://www.cnblogs.com/robyn/p/3528316.html
Copyright © 2011-2022 走看看