0
幾天前,我遇到了一個問題,即我有一個具有歷史數據或非常大量對象的集合。這個集合暴露於如此多的線程或客戶端,因此,人們可能會迭代它,有些可能會添加到它,有些可能會在迭代時刪除此集合。所以,修改可能會在c#中引發「集合更改異常」。將對象添加到c中的大集合中併發症#
現在,我需要設計一個數據結構或C# 的集合,其滿足以下挑戰:
您可以收集無法複製到不同的對象作爲收藏是非常大的, 所以複製它會導致我們很多的內存浪費。
當任何用戶在迭代集合的同時添加到集合中時,應該將新對象添加到集合中,並且不應該拋出任何異常,並且還應該在迭代結束時讀取以及。
但萬一用戶從集合中刪除任何項目,它應該拋出異常。
添加,刪除和迭代應該是線程安全的。沒有競爭條件應該在那裏。
考慮使用數據庫。 – SLaks
數據庫是從磁盤讀取的,它不在內存中。它會減慢整個操作過程 –
錯誤;數據庫引擎會將數據庫保存在內存中。 – SLaks