Thread.Sleep(1)在C#中的影响是什么?

在窗体应用程序中,调用Thread.Sleep(1)的影响如下面的代码所示:

public Constructor()
{
    Thread thread = new Thread(Task);
    thread.IsBackground = true;
    thread.Start();
}

private void Task()
{
    while (true)
    {
        // do something
        Thread.Sleep(1);
    }
}

这个线程会占用所有可用的CPU?

什么分析技术可以用来衡量此线程的CPU使用率(除任务管理器)?

如上所述,你的循环不会占用CPU。

但要注意:Windows不是实时操作系统,所以你不会从Thread.Sleep(1)每秒1000次唤醒。如果你没有使用timeBeginPeriod来设置你的最小分辨率,你会每15毫秒唤醒一次。即使在您将最小分辨率设置为1 ms后,您仍然只会每3-4 ms才会醒来。

为了获得毫秒级别的定时器粒度,你必须使用Win32多媒体定时器(C# wrapper)。

http://stackoverflow.com/questions/508208/what-is-the-impact-of-thread-sleep1-in-c

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Thread.Sleep(1)在C#中的影响是什么?