Re: [問題] 為何少有人用c++寫網頁?
→
04/20 09:12,
04/20 09:12
→
04/20 09:13,
04/20 09:13
→
04/20 09:13,
04/20 09:13
→
04/20 11:29,
04/20 11:29
→
04/20 11:30,
04/20 11:30
看到這個就想到 Lock free data structure
下面是兩篇 Alexandrescu 寫的介紹文章
http://erdani.com/publications/cuj-2004-10.pdf
http://erdani.com/publications/cuj-2004-12.pdf
簡介
裡面有給出如何建立一個 concurrent accessiable map container
概念是每次要修改 shared data 就 copy (cache) 一分在私有區域 (copy on write)
然後改完之後利用 atomic compare_and_swap 把新資料 swap 過去
compare_and_swap 就是把目前資料跟你 cache 下來的那分資料
比一下看有沒有修改,沒有的話表示跟你 cache 下來到現在都沒人改過
可以放心地 swap ,不一樣的話就把新的東西 cache 下來再做一次修改
可想而知,每一次 compare 失敗就要砍掉重練會產生大量的複製
所以有人就用 802.11 裡面的 collision avoidence 概念作 random backoff
簡單說就是每次compare 失敗就等久一點再去 cache 再修改。
我自己做實驗是發現 CPU 的確吃飽飽,不過 throughput 跟用一般 read write lock
差不了多少。
另外,Bjarne Stroustrup 也有出一篇寫 lock free vector 的
http://www2.research.att.com/~bs/lock-free-vector.pdf
有跟前面兩篇文章作比較。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.39.27.199
→
04/20 14:43, , 1F
04/20 14:43, 1F
推
04/20 15:44, , 2F
04/20 15:44, 2F
→
04/20 15:45, , 3F
04/20 15:45, 3F
→
04/20 15:45, , 4F
04/20 15:45, 4F
lock free 不會 dead lock 是沒錯,不過就我之前了解
dead lock 不是主要問題,starvation 才是 lock free 想解決的
下面這篇 Wait-free Synchronization 是 Maurice Herlihy 得獎的文章
http://portal.acm.org/citation.cfm?doid=114005.102808
給你參考看看。
※ 編輯: adxis 來自: 114.47.75.72 (04/26 03:30)
討論串 (同標題文章)