如果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属性是不是线程安全的吗?使用仅属于特定实例且线程安全的私有属性是否总是明智的?
最佳答案 当编译器为自动属性创建支持字段时,它不会在其上创建任何同步.
至于线程安全性 – 它取决于你在线程中对这个类的对象做了什么.如果每个线程有不同的对象,没问题.
如果您从许多线程访问相同的对象(即共享资源),情况会有所不同:
如果您所做的只是读取值而不是从多个线程设置它,则没有问题.
如果要从多个线程修改对象,则可能会出现问题.这将需要同步,您可以在线程代码中添加.