Dot-Net
.NET 的無鎖和執行緒安全 IList<T>
是否有實現 IList 的無鎖和執行緒安全的資料結構?
自然,無鎖我的意思是一種在.NET中不使用鎖定原語而是使用互鎖操作/原子操作來實現執行緒安全的實現……顯然在並發資料結構下沒有一個……
有沒有人看到一個漂浮在周圍?
我已經看到了一個在amino-cbbs中實現的java ,稱為LockFreeVector ,但到目前為止還沒有用於.NET。有任何想法嗎?
好吧,我在任何地方都找不到這樣的課程;所以**我試了一下**。
ConcurrentList<T>我的課程的原始碼可在 GitHub 上找到。它是無鎖的、執行緒安全的(我認為,基於我的單元測試),並且實現了
IList<T>.它不支持
Insert、RemoveAt/Remove或Clear。我很高興地發現我的實現(我獨立提出)與軟體世界中一些受人尊敬的人發布的資料結構非常相似。
有關實現本身的相當簡短的討論,請參閱我最近的部落格文章。
目前,它根本沒有記錄,考慮到某些程式碼有多“棘手”,這有點糟糕:(
無論如何,如果您查看並發現錯誤或其他問題,請給我一個新的。
無論如何,可能值得您花時間檢查一下。如果你這樣做,讓我知道你的想法。