繁体   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