这取决于您的线程共享的资源.请考虑以下示例:
public class MyClass
{
private int i;
public int Foo { get { return i++; } }
}
public static class SharedResources
{
public static const string SharedString;
public static readonly MyClass SharedMyClass;
}
Run Code Online (Sandbox Code Playgroud)
在此代码示例中,引用SharedString是线程安全的,因为字符串在C#中是只读的.但是,任何线程都可以随时调用SharedResources.SharedMyClass.Foo,并且因为增量不是线程安全的(除非使用Interlocked.Increment),读取此属性的线程可能会得到不一致的结果.
简而言之,如果一个类的公共API是只读的,但其内部不是线程安全的,那么只要有多个线程从中读取它就不安全.
| 归档时间: |
|
| 查看次数: |
901 次 |
| 最近记录: |