gpt4 book ai didi

powershell - 有没有办法在 powershell foreach-object -parallel 中获取 TID(线程 ID)?

转载 作者:行者123 更新时间:2023-12-05 05:57:14 25 4
gpt4 key购买 nike

只是想知道我是否可以在 powershell 7 或 pwsh ( https://github.com/PowerShell/PowerShell#-powershell ) 中使用 foreach-object -parallel 获得线程 ID 的 $TID,就像 $PID 或进程 ID 一样。我可以运行它并在 sysinternals procexp ( https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer ) 的 pwsh.exe 属性的“线程”选项卡中看到一堆带有 TID 列的线程。

 1..20 | foreach-object -Parallel { start-sleep (5*$_) } -ThrottleLimit 20

enter image description here

最佳答案

进程 ID ($PID) 不同,没有 automatic PowerShell variable反射(reflect)线程 ID(从 PowerShell 7.2 开始)。

如果获取托管(相对于 native )线程 ID 就足够了,您可以使用 .NET API (System.Threading.Thread.CurrentThread):

1..2 | % -Parallel { [System.Threading.Thread]::CurrentThread.ManagedThreadId }

要通过 P/Invoke 获取 native 线程 ID,您需要平台特定解决方案;例如,对于 Windows,使用 GetCurrentThreadId() WinAPI函数:

# For Windows
Add-Type -Name WinApi -Namespace demo -MemberDefinition @'
[DllImport("Kernel32.dll")]
public static extern uint GetCurrentThreadId();
'@

1..2 | % -Parallel { [demo.WinApi]::GetCurrentThreadId() }

关于powershell - 有没有办法在 powershell foreach-object -parallel 中获取 TID(线程 ID)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68874167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com