作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
只是想知道我是否可以在 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
最佳答案
与进程 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/
我是一名优秀的程序员,十分优秀!