2

参考这个问题:ASP.NET 是多线程的(它如何执行请求),这是否是对线程的正确解释:ASP.NET 每个应用程序实例都有一个工作进程。它是多线程的,使用自己的应用程序池。大多数线程用于服务(用户)请求。每个请求(用户会话)都是一个线程。对应的响应可能是另一个线程。用户请求来自 ISAPI 的多个线程,ISAPI 本身就是多线程的。

AJAX 不是多线程的。它使用与非 AJAX 网站相同的线程模型。页面请求(ajax 或非 ajax)可能会导致服务器上使用多个线程,但它仍然是客户端上的一个线程(浏览器使用单个线程)。

4

1 回答 1

2

简而言之,是的。在 ASP.NET 中,请求/响应通常在单个线程中处理......“请求”和“响应”之间没有明显区别,它只是 ISAPI 将请求信息传递给 ASP.NET 处理程序,它将执行适当的代码并编写输出。(虽然当 ASP.NET 处于负载状态并且需要有效利用可用线程时,有一种机制可以将请求从一个线程迁移到另一个线程。但我不能 100% 确定何时或为什么会发生这种情况。 )

浏览器端 JavaScript 和 AJAX 不是多线程的,但对某些人来说可能是这样的,因为 AJAX 调用是异步的并且响应是事件驱动的;也就是说,一旦请求被分派到服务器,JavaScript 线程就不会被阻塞。向服务器发送更多请求是免费的,并且响应可能会或可能不会按照发送的顺序返回。然而,因为在核心实际上只有一个线程,如果两个响应同时返回,一个会阻塞另一个的执行,直到它完成。

于 2009-02-15T18:20:00.373 回答