執行緒 應用程式域 程序

2021-04-08 17:02:33 字數 901 閱讀 3521

程序是個管理單元,管理著應用程式的多個執行緒,其中有個預設的主線程,其他執行緒都是從其他執行緒中派生出來的。執行緒一旦被建立,主線程是無法干涉它的。執行緒的銷毀在.net中是通過丟擲乙個異常,來終止這個執行緒的。

在.net出現以前,乙個程序下,只能執行乙個應用程式,而在,net出現後,乙個程序下,可以執行多個應用程式,這都是因為應用程式域的出現。

以前使用程序邊界來隔離在同一臺計算機上執行的應用程式。每乙個應用程式被載入到單獨的程序中,這樣就將該應用程式與在同一臺計算機上執行的其他應用程式相隔離。

隔離這些應用程式的原因在於記憶體位址是與程序相關的;在目標程序中,不能通過任何有意義的方式使用從乙個程序傳遞到另乙個程序的記憶體指標。此外,您不能在兩個程序間進行直接呼叫。您必須代之以使用**,它提供一定程度的間接性。

應用程式域提供安全而通用的處理單元,公共語言執行庫可使用它來提**用程式之間的隔離。您可以在具有同等隔離級別(存在於單獨的程序中)的單個程序中執行幾個應用程式域,而不會造成程序間呼叫或程序間切換等方面的額外開銷。在乙個程序內執行多個應用程式的能力顯著增強了伺服器的可伸縮性。

隔離應用程式對於應用程式安全也是十分重要的。例如,您可以在單個瀏覽器程序中執行幾個 web 應用程式中的控制項,同時使這些控制項不能訪問彼此的資料和資源。

應用程式域所提供的隔離具有以下優點:

應用程式域形成了託管**的隔離、解除安裝和安全邊界。執行緒是公共語言執行庫用來執行**的作業系統構造。在執行時,所有託管**均載入到乙個應用程式域中,由特定的作業系統執行緒來執行。

應用程式域和執行緒之間不具有一對一的相關性。在任意給定時間,在單個應用程式域中可以執行幾個執行緒,而且特定執行緒並不侷限在單個應用程式域內。也就是說,執行緒可以自由跨越應用程式域邊界;不為每個應用程式域建立新執行緒。

在任意給定時間,每一線程都在乙個應用程式域中執行。執行庫會跟蹤在哪些應用程式域中有哪些執行緒正在執行。 

執行緒 應用程式域 程序 比較區別

程序是個管理單元,管理著應用程式的多個執行緒,其中有個預設的主線程,其他執行緒都是從其他執行緒中派生出來的。執行緒一旦被建立,主線程是無法干涉它的。執行緒的銷毀在.net中是通過丟擲乙個異常,來終止這個執行緒的。在.net出現以前,乙個程序下,只能執行乙個應用程式,而在,net出現後,乙個程序下,可...

程序,執行緒,應用程式域,程式集,託管

程序 要解決的問題 為了使程式能併發執行,要併發執行就要隔離程序,使程序獨立,即每個程序有屬於自己的資料段 程式段 程序控制塊 託管 託管的 不可以直接寫記憶體,所以是安全的。非託管 非託管的 可以直接讀寫記憶體,不安全,但效率高,像c 中的指標。執行緒 出現的背景 由於程序是乙個資源的擁有者,因而...

應用程式域

一種邊界,它由公共語言執行庫圍繞同一應用程式範圍內建立的物件建立 即,從應用程式入口點開始,沿著物件啟用的序列的任何位置 應用程式域有助於將在乙個應用程式中建立的物件與在其他應用程式中建立的物件隔離,以使執行時行為可以預知。在乙個單獨的程序中可以存在多個應用程式域。以前使用程序邊界來隔離在同一臺計算...