今天看到一篇文章,很詳細的描述了鎖和鎖粒度的概念,如下
為什么要加鎖?加鎖是為了防止不同的線程訪問同一共享資源造成混亂。
打個比方:人是不同的線程,衛生間是共享資源
你在上洗手間的時候肯定要把門鎖上吧,這就是加鎖,只要你在里面,這個衛生間就被鎖了,只有你出來之后別人才能用。想象一下如果衛生間的門沒有鎖會是什么樣?
打個比方:人是不同的線程,衛生間是共享資源
你在上洗手間的時候肯定要把門鎖上吧,這就是加鎖,只要你在里面,這個衛生間就被鎖了,只有你出來之后別人才能用。想象一下如果衛生間的門沒有鎖會是什么樣?
什么是加鎖粒度呢?所謂加鎖粒度就是你要鎖住的范圍是多大。
比如你在家上衛生間,你只要鎖住衛生間就可以了吧,不需要將整個家都鎖起來不讓家人進門吧,衛生間就是你的加鎖粒度。
怎樣才算合理的加鎖粒度呢?
其實衛生間並不只是用來上廁所的,還可以洗澡,洗手。這里就涉及到優化加鎖粒度的問題。
你在衛生間里洗澡,其實別人也可以同時去里面洗手,只要做到隔離起來就可以,如果馬桶,浴缸,洗漱台都是隔開相對獨立的,實際上衛生間可以同時給三個人使用,
當然三個人做的事兒不能一樣。這樣就細化了加鎖粒度,你在洗澡的時候只要關上浴室的門,別人還是可以進去洗手的。如果當初設計衛生間的時候沒有將不同的功能區域划分
隔離開,就不能實現衛生間資源的最大化使用。這就是設計架構的重要性。
感謝博客http://blog.chinaunix.net/uid-20758579-id-1876916.html