我使用的是asp.net mvc4,但我对Action有疑问,Action是否安全?我的意思是当2个请求到来时,可能1个请求是否处理但是没有完成,第二个请求启动句柄?
或者如果它是安全的线程,请等待完成一个请求和另一个请求?
感谢。
UPDATE1:
看起来它不是线程安全的。我对Controller有一个动作。在动作5方法中已执行。 (1,2,3,4,5)。共有3个请求(A,B,C)。
有我的日志显示,这些执行顺序:
A-1 B-1 C-1 A-2 A-3 B-2 B-3 B-4 B-5 C-4 C-5 A-2 A-3 A-4 A-5
因为我需要检查1方法的数据,如果找不到数据,我会的 在方法5上写它。如果执行不使用线程安全,它将写入3 数据。(因为所有未找到方法1的数据,也都没有等待完成 一起......)
UPDATE2:
也许我对Thread安全感到困惑,但感谢朋友的帮助。
答案 0 :(得分:2)
可能1个请求是否处理但未完成,第二个请求启动句柄?
当然,否则您的网站一次只能有效处理一个页面视图。
您必须使您的代码线程安全。例如,请参阅how to lock an asp.net mvc action?,或者您可以在数据库中创建一个代码必须查询的锁。
答案 1 :(得分:1)
在ASP.NET控制器中,实例为thread-safe
,因为将为每个请求创建新的控制器实例。因此,并发调用不会相互影响。
但Static
或Shared
资源不是thread-safe
。