.NET CLR如何處理同一程序的多個實例同時運行?.NET內存模型,同時運行同一程序的多個實例
我假定每個實例都是獨立的,佔用它自己的唯一內存空間,並且一個實例不會影響另一個實例。
有沒有一個很好的資源在線(簡單地!)解釋了CLR如何處理這個問題及其影響?
.NET CLR如何處理同一程序的多個實例同時運行?.NET內存模型,同時運行同一程序的多個實例
我假定每個實例都是獨立的,佔用它自己的唯一內存空間,並且一個實例不會影響另一個實例。
有沒有一個很好的資源在線(簡單地!)解釋了CLR如何處理這個問題及其影響?
相同應用程序的多個實例與不同應用程序的多個實例沒有區別,只是它們碰巧從相同的文件中加載了它們的代碼。
流程仍然是流程。 .Net只是一個在OS上運行的執行上下文。託管代碼(IL)是在執行之前編譯的JIT,實質上由CLR管理。最終,它仍然是實際流程中的真實代碼。
編輯:閱讀你自己的評論,你在找什麼叫做「應用程序隔離」。這是通過「應用程序域」概念完成的。轉到MSDN鏈接獲取更多信息。
取決於過程主機(以下簡稱 「EXE」 本身,IIS,WAS,...)
但是你要尋找什麼是 「應用程序域」。這是所有這些進程主機的常見模式。
你究竟對什麼感興趣?我認爲你的目標在這裏太寬了...... –
@DanielMošmondor - 我很想知道是否會在同一臺機器上同時運行同一.NET程序的多個實例。我認爲檢查比假設更好!我想,沒有,但我正在尋找解釋這是如何做的事情,以便我能夠理解並對答案充滿信心。 –
代碼被加載,所以它是共享的,數據被創建,因此它是分開的。對於機器上的所有進程都是如此。除非你使用了一些IPC機制,比如共享內存,內存映射文件,套接字...... –