在 C# 中,类级变量不是线程安全的(对此有任何异常(exception)吗?让我知道)。所以我必须将这个变量的使用(就像在同一个类中的方法中)包装在一个锁中。
但是,使用 new 的想法让我认为每个类实例都有自己的实例等,并且永远不会共享一个实例变量,因此对该方法的调用永远看不到任何共享数据。那么为什么一个实例化的类需要锁定它的类级变量呢?只有当两个线程访问相同的内存地址时才需要锁,但我认为情况并非总是如此?
谢谢
请您参考如下方法:
您可以创建一个类的实例,并从多个线程访问它。例如:
MyClass classInstance = new MyClass();
Task.Factory.StartNew( () =>
{
classInstance.DoSomething();
});
Task.Factory.StartNew( () =>
{
classInstance.DoSomething();
});
这两个任务都将在后台线程上执行,并使用相同的实例 - “classInstance”指向的实例。如果类是可变的,则需要同步。
