我制作了一个应用程序,其中还包含一个文件夹/文件扫描程序。我遇到了线程结构的问题。多线程列表模式建议
工作原理: 对于每个文件夹/文件,它会发现它启动一个线程。每个线程中都有一个函数,它使用一个列表来检查是否找到了类似的项目,以便它可以添加到现有项目中。如果没有找到,它会将该项目添加到前面提到的列表中。线程并行执行(异步)。
问题: 因为它是异步的,它有时会在列表检查中失败。这是因为检查和添加到列表之间有一段时间。可能发生的事情是,检查返回,没有类似的项目,当然是。这将导致列表中出现相同的项目。
我也已经让线程彼此等待。我非常喜欢它在前端的效果。 (项目很好地实时添加到列表中)。但是这需要很长的时间来处理很多文件夹/文件。
现在我正在考虑在函数之间进行混合,但我真的很希望看到异步线程的速度和等待每个线程的安全性。
有人有什么想法吗?
为什么'ConcurrentDictionary'? –
@AndreasNiedermair:因为这并不妨碍检查与延迟添加问题。 –
你只是围绕一个非原子操作构造一个锁,使其成为“原子” - 与TryAdd有什么不同?我错过了什么 - *这将导致相同的项目发生在列表中。*这正是“TryAdd”的原因......? –