Thread.Sleep()在连续循环中的影响

本文关键字:循环 影响 连续 Sleep Thread | 更新日期: 2023-09-27 18:03:37

考虑以下代码:

void MyRunningThread()
{
    while(counter>0) // counter is a Class member that can get modified from external     //threads
    {
         Thread.Sleep(2000);
    }
}

假设我在上面的函数上启动一个线程。

现在,在线程中有这样一个永不结束的循环是不好的吗?我添加了Thread.Sleep(),假设上下文切换到这个函数的频率会因为Sleep而降低,从而减少这个线程的资源消耗。

谁来验证我的观点

Thread.Sleep()在连续循环中的影响

浪费一个线程,这远非最佳选择。

你应该考虑使用Timer或WaitHandle之类的。如果没有更多的细节,就不可能做到精确。

但是你目前的方法不是灾难性的或任何东西,前提是其他线程使用lockInterLocked来改变计数器。

尝试使用System.Threading.SpinWait而不是sleep,本文将解释如何使用它http://www.emadomara.com/2011/08/spinwait-and-lock-free-code.html

你能详细说明你的问题吗?为什么需要在另一个线程中等待?无论如何,如果您需要等待直到某个计数器变为零,您可以考虑使用CountdownEvent