Ten.Sleep(100)或单个Thread.Sleep(1000)十次?

时间:2013-07-02 07:10:58

标签: c# multithreading

在性能方面存在差异:

Thread.Sleep(10000);

for(int i=0; i<100; i++)
{
   Thread.Sleep(100);
}

Thread.Sleep(10000)的单次调用是否也会在10秒内导致上下文切换(因此操作系统可以看到它是否已完成休眠),或者此线程是否真的没有服务10秒?

2 个答案:

答案 0 :(得分:2)

第二个代码(for循环)需要更多的进程交换,并且应该比Thread.Sleep(10000);

慢一点

无论如何,您可以使用System.Diagnostics.Stopwatch类来确定这两种方法的确切时间。我相信差异非常小。

答案 1 :(得分:1)

在任何情况下,由于以下开销,第二个循环将花费时间

  1. 10个不同线程对象的内存利用率
  2. 调用thread.sleep
  3. 后,将启动10个不同的回调
  4. 运行循环的间接费用
  5. 如果我们想在单个线程上运行代码,那么为什么我们想要一个循环,如果我们甚至没有任何断点。