引用这个问题:Is ASP.NET multithreaded (how does it execute requests) ,这是对线程的正确解释吗: ASP.NET 每个应用程序实例有一个工作进程。它是多线程的,使用自己的应用程序池。大多数线程用于服务(用户)请求。每个请求(用户 session )是一个线程。相应的响应可能是另一个线程。用户请求来自 ISAPI 的多个线程,ISAPI 本身就是多线程的。
AJAX 不是多线程的。它使用与非 AJAX 网站相同的线程模型。页面请求(ajax 或非 ajax)可能会导致在服务器上使用多个线程,但它在客户端仍然是一个线程(浏览器使用单个线程)。
最佳答案
简而言之,是的。在 ASP.NET 中,请求/响应通常在单个线程中处理......“请求”和“响应”之间没有明确的区别,它只是 ISAPI 将请求信息传递给 ASP.NET 处理程序,它将执行适当的代码并编写输出。 (虽然有一种机制可以在 ASP.NET 处于负载状态并且需要有效利用可用线程时将请求从一个线程迁移到另一个线程。但我不能 100% 确定何时或为什么会发生这种情况的详细级别。 )
浏览器端 JavaScript 和 AJAX 不是多线程的,但对某些人来说可能是多线程的,因为 AJAX 调用是异步的并且响应是事件驱动的;也就是说,一旦请求被发送到服务器,JavaScript 线程就不会被阻塞。向服务器发送更多请求是免费的,响应可能会也可能不会按照发送时的相同顺序返回。然而,因为核心实际上只有一个线程,如果两个响应同时返回,一个将阻塞另一个的执行,直到它完成。
关于ASP.NET 和 AJAX 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/551277/