我將努力使這個問題儘可能的通用,但我會給出一個簡要介紹了我的實際問題 -併發skiplist讀鎖定
我試圖實現對優先級隊列併發skiplist。每個「節點」都有一個值和一個「前向」節點的數組,其中node.forward [i]表示跳過列表的第i級上的下一個節點。對於寫訪問(即插入和刪除),我用一個自旋鎖(仍然以確定是否是用最好的鎖)
我的問題基本上是,當我需要一個遍歷讀訪問,
node = node.forward[i]
圍繞這樣的事情需要什麼樣的線程安全性?如果另一個線程在我讀取的同一時間修改node.forward [i](沒有當前的讀取鎖定機制),會發生什麼情況?
我最初的想法是對索引進行正向的getter和setter一個ReaderWriterLockSLim。在這種情況下是否會有太多不必要的鎖定?
編輯:或者會是最好的,而不是使用我所有的讀取Interlocked.Exchange?
+1因爲跳過列表很棒。 :D – Tudor