我的理解是,如果您在 C# 中使用泛型列表 (List),那么它可以支持多个并发读取器,但只能支持一个写入器。当您将编写器引入混合时,您还必须提供同步结构以使操作线程安全。
List.Contains 是否被视为读取操作?换句话说,如果我调用这个方法,我是否需要担心写入者可能同时写入这个列表?
最佳答案
是的,你应该。基本上,如果列表可能同时用于写入,我会同步任何操作。
一般来说,我发现集合分为两类 - 一种是创建、初始化然后再也不会更改(线程安全),另一种是随着时间的推移而发生变化(非线程安全,所有访问都锁定)。
关于c# - List<T>.Contains() 是线程安全调用 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/738444/