MVC 4 中的多线程
本文关键字:多线程 MVC | 更新日期: 2023-09-27 18:30:38
我是 ASP.NET MVC(使用4)的新手,并且对多线程有一些基本问题。
-
现在我已经编写了所有的控制器。我是否应该显式创建线程轮询并为每个传入请求分配一个线程?我读到了一些建议这种多线程在 MVC 中自动完成的内容,我不应该自己做。这是真的吗?
-
大多数请求会更改数据库(即上传文件)。这篇文章说
DbContext
不是线程安全的,选择的答案是为每个线程创建一个新实例,我在控制器中就是这样做的。如果 MVC 自动创建线程(问题 #1),这是否安全?
谢谢!
1)你不必担心。
在 Web 服务器上,.NET Framework 维护一个线程池,用于为 ASP.NET 请求提供服务。当请求到达时,将调度池中的线程来处理该请求。如果同步处理请求,则处理请求的线程在处理请求时将被阻止,并且该线程无法为另一个请求提供服务。
从这里: http://msdn.microsoft.com/en-us/library/ee728598(v=vs.100).aspx
2) 如果您为每个请求构造一个DbContext
,您应该没问题 - 在控制器的构造函数中执行此操作将为您执行此操作。(如果需要,您还可以查看控制反转/依赖注入框架,但它不会改变原则。