c# – 是类级公共属性线程安全

如果w3wp.exe是负责满足Web应用程序的所有传入请求的进程(如果我错了就纠正我),如果我有一个类,那就让我们称它为客户这样

public class Customer  
{  
  public string FirstName{get;set;}  
  public string LastName{get;set;}
}

所以现在在这样的代码中访问这个类

 var customer = new Customer();

在堆中创建实例,并且在w3wp.exe中运行的所有线程都可以访问客户对象的FirstName和LastName属性.

那么,在这种情况下,FirstName和LastName属性是不是线程安全的吗?使用仅属于特定实例且线程安全的私有属性是否总是明智的?

最佳答案 当编译器为自动属性创建支持字段时,它不会在其上创建任何同步.

至于线程安全性 – 它取决于你在线程中对这个类的对象做了什么.如果每个线程有不同的对象,没问题.

如果您从许多线程访问相同的对象(即共享资源),情况会有所不同:

如果您所做的只是读取值而不是从多个线程设置它,则没有问题.

如果要从多个线程修改对象,则可能会出现问题.这将需要同步,您可以在线程代码中添加.

点赞