十次Thread.Sleep(100)或一次Thread.Seep(1000)
本文关键字:Thread 一次 Seep 1000 十次 Sleep | 更新日期: 2023-09-27 18:20:36
之间是否存在差异(从性能角度来看)
Thread.Sleep(10000);
和
for(int i=0; i<100; i++)
{
Thread.Sleep(100);
}
对Thread.Sleep(10000)
的单个调用是否也会在这10秒内导致上下文切换(这样操作系统就可以看到它是否已经休眠),还是这个线程真的在10秒内没有得到服务?
第二个代码(用于循环)需要更多的进程交换,并且应该比Thread.Sleep(10000);
慢一点
无论如何,您可以使用System.Diagnostics.Stopwatch
类来确定这两种方法的确切时间。我相信差别会非常非常小。
在任何情况下,由于的以下开销,第二个循环都需要时间
- 10个不同线程对象的内存利用率
- 一旦调用thread.sleep,将启动10个不同的回调
- 运行环路的间接费用
- 如果我们想在单线程上运行代码,那么如果我们甚至没有任何断点,为什么要循环呢