c# - Thread.Sleep(1) 在 C# 中有什么影响?

标签 c# multithreading

在 Windows 窗体应用程序中调用 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).如果您还没有使用过 timeBeginPeriod设置您的最低分辨率,您将每 15 毫秒唤醒一次。即使在将最小分辨率设置为 1 毫秒后,您仍然只会每 3-4 毫秒醒来一次。

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

关于c# - Thread.Sleep(1) 在 C# 中有什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/508208/

相关文章:

c# - 以编程方式创建新的 IIS 网站时,如何将其添加到现有的应用程序池中?

javascript - 遍历数组在每个元素上运行异步任务

c# - 如何从它的扩展方法修改类?

c# - 使用存储库模式 - 出于 EF 性能原因选择实体的特定字段

java - Spring AOP 与多线程

c++ - 具有互斥量的多个锁和死锁的可能性

java - 如何从按钮重新启动 java/Android 中的线程?

multithreading - POSIX pthread 互斥锁和解锁中线程的等待队列在哪里?

c# - LINQ to Entities 无法识别方法 'System.String ToString(Int32)'

c# - nhibernate queryOver 投影语法