[英]Process vs Instance vs Runspace in PowerShell
[Powershell]::create()
-方法在“當前或新運行空間”中創建一個新的PowerShell-“ 實例 ”。
有人可以解釋這方面的術語process , instance , runspace和(也許是thread )如何相互關聯。 用外行的話說吧?
您擁有的術語不可互換,並且不會做相同的事情。
進程是運行指令集的程序。
線程是程序中指令的單次運行。
多線程是指同時運行多個指令。 每個都需要一個單獨的線程。
Runspace在同一Powershell進程中,但是調用新的Powershell引擎以便在不干擾當前Powershell腳本線程的情況下運行其代碼。
實例是一個包含的運行代碼。 它是一個描述符。
所以這是一些例子
我可以有一個流程實例。 我可以有一個線程實例。 我可以有一個Runspance的實例。
編輯以根據評論擴展為答案
“因此,在上面發布的示例ive([Powershell] :: create())中,這是線程,進程或運行空間的實例嗎?”
因此,我們有一個Powershell應用程序。 發生的情況是此應用程序啟動了一個運行空間,在該空間中將執行您的命令,並設置一個位置來創建Powershell對象。 每次打開Powershell控制台時,您都在啟動另一個運行空間。
[Powershell]::create()
創建一個對象,您可以在其中確定將要運行的對象以及將在其上運行的運行空間。 如果您不選擇一個運行空間,那么它將為您創建一個。
那么[Powershell] 將運行什么? (腳本)及其運行位置 ( 運行空間)
Runspace是如何運行的? (在powershell引擎上)
您可以將[Powershell] :: Create()視為單獨線程上的新powershell會話。 該會話將創建一些默認運行空間,但是您可以將其更改為另一個運行空間。 與Start-Process(單獨的進程)和Start-Job(子進程)不同,[Powershell] :: Create()與您的主腳本在同一進程上運行,並與其共享內存空間。 這意味着您可以在主會話和子會話之間交換實際的.net對象。 如果會話在單獨的進程上運行,則只能與文本/序列化數據交換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.