現在我知道在Indy HTTP服務器(TIdHTTPServer)上,TIdServerContext被重新用於來自特定客戶端的多個請求。
只有當客戶端和服務器正在使用HTTP保持活動狀態時,才能通過單個TCP連接發送多個請求。否則,每次響應後關閉連接。
但是,在設計工作方式時,我需要知道多個請求是否可能使用相同的上下文類相互重疊?
編號Indy上下文對象是基於每個連接創建的,它們一次在單個線程上運行,並且每個連接一次處理一個HTTP 1.1和更早的請求(HTTP 2允許多個並行請求,但Indy此時不執行HTTP 2)。
例如,假設在瀏覽器中輸入一個URL,一遍又一遍刷新壓制。我看到發生的事情是創建多個上下文類
刷新時,瀏覽器正在關閉當前連接並創建一個新連接。關閉連接是取消尚未完成的待處理請求的唯一方法。
但是,我怕什麼地方,相同的上下文實例可以用於處理在同一時間兩個請求。
這是不可能的。
這可能發生嗎?
號
抑或是肯定地說,一個實例將永遠不會處理在同一時間多個請求?
是的。它可能在其生存期內處理多個請求,但不是並行處理。
我幾乎可以肯定是後者,考慮到上下文是它自己的線程
的背景是不是一個線程。更準確地說,上下文表示一個特定的連接,它恰好只由一個線程提供服務。 Indy可以重用線程(如果將線程池調度程序分配給服務器),其中給定線程可以在其生命週期中服務多個上下文。但是Indy不會重複使用多個連接的上下文。
基本上,你問的上下文是否可以與多個線程關聯。我想你知道這個答案。 –