我想这个问题可以归结为“SpinWait vs. Block?”,但我认为可能会有一个更有趣的答案,解释为什么几乎每个C#线程教程都建议使用以下调用:
Thread newThread = new Thread(new ThreadStart(ThreadMethod));
newThread.Start()
while (!newThread.isAlive()) ;
Thread.Sleep(1); // Allow the new thread to do some work
与其这样阻塞不同:
Thread newThread = new Thread(new ThreadStart(ThreadMethod));
newThread.Start()
while (!newThread.isAlive()) Thread.Sleep(1);
Thread.Sleep(1); // Allow the new thread to do some work
我的非常暴力的测试(在while循环中调用DateTime.Ticks)并没有真正揭示任何东西(两个实例的差异都为0个tick)。线程创建过程是否足够短,以至于旋转更有效?还是大多数教程建议旋转,因为它略微更优雅,时间差异可以忽略不计?