Re: [問題] ReadWriteLock 用在map上的每個field
※ 引述《adrianshum (Alien)》之銘言:
: ※ 引述《easy1 (e :) y)》之銘言:
: 沒有什麼異想天開的,我記憶中我有做過類似的東西.
: 當然一般來說不會搞這些麻煩東西 XDD
嗯 結果你印象中 這樣的做法"划算"嗎
效能有不錯嗎 (還有畢竟我沒寫過這種concurent程式..:-( )
如果讀/寫比例不會差太多的時候
: : --
: : ◆ From: 79.210.96.247
: : 推 H45:上上篇不就和你現在說的很像了嗎? 09/29 23:46
: : 推 H45:但事實上 write 的時候會修改容器屬性,這必須防止其他人寫入 09/29 23:48
: : 推 sbaby0416:值得一提的是 這樣是可以做的 但是要考慮你讀寫頻率 09/30 00:26
: : → sbaby0416:如果你寫的頻率很頻繁 這樣的作法會令你要求兩次W Lock 09/30 00:29
: 不會兩次 W lock.
: 一般來說的做法是,要新加入 entry, 才會acquire map 的 W lock.
: (新加入 entry 也不需取新 entry 的 W lock 哪)
: 修改現有的 entry 的話則只取 map read lock, 然後取 entry write lock.
: Alien
嗯 我也這麼想
我現在想法是用 ConcurrentHashmap 搭配 map w/r lock 和 各各 entry 的 r/w lock
(ConcurrentHashmap支援同時更改map結構)
我的需求大概是 讀/寫比 = 1.5 ~ 2 , entry 數量四位數..
如果簡單一點用 HashMap 加只有一個 map w/r lock
(有write 就lock整張map)
看起來程式比較好寫 效能會差很多嗎...XD
--
感覺現在比較清楚了 感謝
這裡是一篇找到的討論文章
http://forum.java.sun.com/thread.jspa?threadID=5114887
也有人作出很瘋狂的事..每個object都一個lock (應該有改善法)
但順帶一提是jdk6 Lock 跟5 不太一樣了
--
PLUR
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 79.210.70.115
※ 編輯: easy1 來自: 79.210.70.115 (09/30 04:13)
※ 編輯: easy1 來自: 79.210.70.115 (09/30 04:14)
討論串 (同標題文章)