簡體   English   中英

PowerShell中的流程vs實例vs Runspace

[英]Process vs Instance vs Runspace in PowerShell

[Powershell]::create() -方法在“當前或新運行空間”中創建一個新的PowerShell-“ 實例 ”。

有人可以解釋這方面的術語processinstancerunspace和(也許是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM