1. 程式人生 > >IIS是怎麽處理多個請求的?

IIS是怎麽處理多個請求的?

.com 部署 通過 .exe -i nbsp 網站程序 用戶 .cn

一,假設有一臺服務器,它的IIS上部署有一個Web應用程序-S,可以通過瀏覽器或其他方式進行訪問。 假設有A、B、C三臺電腦同時訪問網站S,IIS接收到3個HTTP請求,然後分別為三個請求各建立一個線程。每個線程都有各自的線程棧,每個用戶的數據都放在各自線程棧中,也只有用戶線程才能取得對應線程棧中的數據,線程之間不會相互影響。這就是為什麽一個網站程序能同時被多個用戶訪問。 用戶的線程運行時,會生成很多的引用類型的對象,這些對象都存在托管堆上,托管堆不像棧只能被所屬的線程訪問,它能被所有線程共同訪問,那各個線程怎麽取得自己創建的對象而不會取到其他線程所創建的對象呢?這是因為對象實例雖然在托管堆上,但實例的引用是在線程棧上的,線程要根據實例的引用才能取得實例數據,而線程棧又只能被對應的線程訪問,所以線程只會取到自己創建的對象實例,而不會取到其他用戶線程所創建的對象實例,同時也不會被其他用戶線程取走對象實例。
當然,值類型數據就不用說,它們都存在於線程棧上,只有各自的線程才能訪問,也就是只有各自的用戶可以訪問。 原文博主:https://www.cnblogs.com/wangyihome/p/8275728.html 二,在我們配置IIS的時候我們的網站,IIS網站對應的進程名一般叫w3wp.exe ,當用戶請求過來,IIS會給用戶開啟一個線程,當這個線程同時請求一個方法時,這時候就是並發,所以在線程的並發我們可以用lock, 鎖定一個在托管堆上的對象,當這個對象被鎖定時,其他進程等待這個對象被當前進程使用完,然後才可以使用該方法,這個就是lock的使用

IIS是怎麽處理多個請求的?