- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
MSDN含糊地提到:
A ReadOnlyCollection<(Of <(T>)>) can support multiple readers concurrently, as long as the collection is not modified. Even so, enumerating through a collection is intrinsically not a thread-safe procedure. To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration. To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.
ReadOnlyCollection
并为 SomeStrings 属性 getter 的每次访问创建一个私有(private)集合的新副本?我知道如果多个线程试图锁定公共(public)集合,可能会出现死锁问题,但这是一个内部库,我不明白我们为什么想要这样做。
public static class WellKnownStrings {
public static readonly ICollection<string> SomeStrings;
static WellKnownStrings()
{
Collection<string> someStrings = new Collection<string>();
someStrings.Add("string1");
someStrings.Add("string2");
SomeStrings = new ReadOnlyCollection<string>(someStrings);
}
}
最佳答案
通常,从不改变其内部状态(一旦发布给外部调用者)的不可变对象(immutable对象)可以被视为线程安全的。
一个 ReadOnlyCollection<T>
然而,它本身并不是线程安全的,因为它只是一个现有集合的包装器,它的所有者可以随时修改它。
不过,OP 中的示例是线程安全的,因为无法修改底层集合(至少在没有黑客攻击的情况下不能修改)。
关于.net - 如果不触及底层集合,ReadOnlyCollection 是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1758492/
我是一名优秀的程序员,十分优秀!