|
|
1
13
该方法中的局部变量将为每次调用。我假定(不知道MVC)控制器实例是按请求的,所以任何实例成员都是安全的。 但是,如果存在任何静态成员或其他共享成员,那么它们就不安全。 |
|
|
2
2
如果方法实例化了它自己的所有变量,并且不使用任何静态成员,那么在所有情况下都应该是正常的。 如果对象一次被多个线程引用,并且它多次读取某些类级变量,而这些变量可以在读取之间被另一个线程修改,那么可能存在问题。 如果它只读取一次数据,并且在类级别上不写任何东西,那么多线程就不可能是一个问题。 |
|
|
3
2
不一定。取决于你所说的“线程安全”是什么意思。 例如,假设它们共享一个实体框架,称为“db”,并且在某个表上工作。既然你称你的控制器为“mycontroller”,我们就称这个db.mytable吧。 每个请求都会调用MyController的不同实例。到目前为止,线程安全。每个控制器创建一个myEntities db=new myEntities()的实例;到目前为止是线程安全的。但是,由于db.mytable是IEnumerable<mytable>类型,因此它们相互作用。假设它们在数据库中的同一个实体上工作(不带锁),比如db.mytable[0]——它们将互相覆盖(“最后一个保存wins的实体”)。 站点的3个用户将有三个独立的指针(在堆栈中)指向同一位置(在数据库中)。这不是线程问题。这是一个数据锁定问题。 |
|
|
Andrus · 如何在Linux中阅读期刊 1 年前 |
|
|
Miranda · 读取xml文件时路径错误中有非法字符 1 年前 |
|
|
Primdonm · 如何将自定义列表中的字符串值格式化为货币格式? 2 年前 |
|
|
Kiryl · Sitecore中自己的控制器 2 年前 |
|
|
Farid · 如何从数据库中填充Resource.resx文件值? 2 年前 |