我以前遇到过调用System.Threading.Thread.Sleep(0)的建议; 在C#中的紧身衣循环中,以防止CPU占用并使用它产生良好的效果.
我有一个PowerShell脚本,有一个紧凑的循环,我想知道我是否应该调用[Thread] :: Sleep(0)或Start-Sleep 0或者PS引擎是否会偶尔为我收益.
我发现当你只是确保它不接管处理器时,通过.Sleep()或其他方法明确地产生一个线程会有一些问题.首先,它只是使你的代码看起来很差,因为它散布着Thread.Sleep(0).您可以对每个实例进行注释,但它看起来不太好.
下一个问题是您只能生成您控制的代码.如果长时间运行的脚本的一部分调用一个你无法控制的长时间运行的函数,这根本没有用.
相反,我会在长时间运行操作期间将ThreadPriority更改为BelowNormal或Lowest.这将解决这两个问题,并且可能会更有效,因为操作系统现在可以做出更明智的决定何时将您分页.
[Thread]::CurrentThread.ThreadPriority = System.Threading.ThreadPriority.Lowest
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
844 次 |
| 最近记录: |