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

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

  一,假設有一臺伺服器,它的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的使用