我想这个问题可以归结为“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
我的蛮力测试(围绕调用 DateTime.Ticks 的 while 循环)并没有真正揭示任何东西(说两种情况下的差异都是 0 滴答声)。
线程创建过程是否足够短以至于旋转更有效?还是大多数教程都建议旋转,因为它稍微优雅一些并且时差可以忽略不计?