我製作了一個應用程序,其中還包含一個文件夾/文件掃描程序。我遇到了線程結構的問題。多線程列表模式建議
工作原理: 對於每個文件夾/文件,它會發現它啓動一個線程。每個線程中都有一個函數,它使用一個列表來檢查是否找到了類似的項目,以便它可以添加到現有項目中。如果沒有找到,它會將該項目添加到前面提到的列表中。線程並行執行(異步)。
問題: 因爲它是異步的,它有時會在列表檢查中失敗。這是因爲檢查和添加到列表之間有一段時間。可能發生的事情是,檢查返回,沒有類似的項目,當然是。這將導致列表中出現相同的項目。
我也已經讓線程彼此等待。我非常喜歡它在前端的效果。 (項目很好地實時添加到列表中)。但是這需要很長的時間來處理很多文件夾/文件。
現在我正在考慮在函數之間進行混合,但我真的很希望看到異步線程的速度和等待每個線程的安全性。
有人有什麼想法嗎?
爲什麼'ConcurrentDictionary'? –
@AndreasNiedermair:因爲這並不妨礙檢查與延遲添加問題。 –
你只是圍繞一個非原子操作構造一個鎖,使其成爲「原子」 - 與TryAdd有什麼不同?我錯過了什麼 - *這將導致相同的項目發生在列表中。*這正是「TryAdd」的原因......? –