Полагаю, этот вопрос можно свести к "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 тиков воба случая).
Является ли процесс создания потока достаточно коротким, чтобы вращение было более эффективным?Или в большинстве уроков предлагается вращение, потому что оно немного элегантнее, а разница во времени незначительна?