zoukankan      html  css  js  c++  java
  • 锁及锁粒度的详细比喻

    今天看到一篇文章,很详细的描述了锁和锁粒度的概念,如下
     
    为什么要加锁?加锁是为了防止不同的线程访问同一共享资源造成混乱。
    打个比方:人是不同的线程,卫生间是共享资源
    你在上洗手间的时候肯定要把门锁上吧,这就是加锁,只要你在里面,这个卫生间就被锁了,只有你出来之后别人才能用。想象一下如果卫生间的门没有锁会是什么样?

    什么是加锁粒度呢?所谓加锁粒度就是你要锁住的范围是多大。
    比如你在家上卫生间,你只要锁住卫生间就可以了吧,不需要将整个家都锁起来不让家人进门吧,卫生间就是你的加锁粒度。

    怎样才算合理的加锁粒度呢?
    其实卫生间并不只是用来上厕所的,还可以洗澡,洗手。这里就涉及到优化加锁粒度的问题。
    你在卫生间里洗澡,其实别人也可以同时去里面洗手,只要做到隔离起来就可以,如果马桶,浴缸,洗漱台都是隔开相对独立的,实际上卫生间可以同时给三个人使用,
    当然三个人做的事儿不能一样。这样就细化了加锁粒度,你在洗澡的时候只要关上浴室的门,别人还是可以进去洗手的。如果当初设计卫生间的时候没有将不同的功能区域划分
    隔离开,就不能实现卫生间资源的最大化使用。这就是设计架构的重要性。
     
    感谢博客http://blog.chinaunix.net/uid-20758579-id-1876916.html
  • 相关阅读:
    sql 相关子查询
    sql 执行计划
    SQL表连接查询(inner join、full join、left join、right join)
    sql执行顺序
    sql 语句 嵌套子查询 执行顺序分析
    只有程序员才看得懂的情书
    Give Me an E
    hdu 1114 (背包变形)
    模版 并查集
    背包 讲解
  • 原文地址:https://www.cnblogs.com/nancymake/p/6252536.html
Copyright © 2011-2022 走看看