2

是否有区别(从性能角度):

Thread.Sleep(10000);

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

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

4

2 回答 2

2

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

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

于 2013-07-02T07:15:19.200 回答
1

在任何情况下,由于以下开销,第二个循环都需要时间

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