我正在处理大量对象和对它们的顺序读取。我发现大多数问题都与多线程有关,但我更关心线程本身由于滥用可分发库而导致的错误。
库中的系统管理一个可能很大的对象集合,在某一时刻,它会对该集合执行顺序读取,并对每个元素执行操作。根据可以在库之外扩展的元素实现,对象可能会尝试将其自身从集合中移除。
我希望这是一个选项,但是如果在按顺序读取集合时发生这种情况,这可能会导致错误。我希望能够在读取集合的内容时锁定它,并将任何删除请求放在一个计划中,以便在顺序读取完成后执行。删除请求必须通过系统,因为对象没有对集合的公共访问权限,我可以只使用 isReading 标志,但我想知道是否有更优雅的构造。
C# 或 .NET 是否提供了执行此操作的工具?也许锁定列表内容,以便我可以在顺序读取期间拦截删除请求?还是我必须为这种情况从头开始实施该行为?