Различие между потоком. Сон (0) и поток. Урожай ()

Поскольку Java имел Сон и Урожай от давно, я нашел ответы для той платформы, но не для .NET

.Net 4 включает новый поток. Урожай () статический метод. Ранее распространенным способом передать ЦП другому процессу был Поток. Сон (0).

Кроме Потока. Урожай () возврат булевской переменной, там другая производительность, различия во внутренностях ОС?

Например, я не уверен если Поток. Сон (0) проверки, если другой поток готов работать прежде, чем изменить текущий поток на состояние ожидания... если это не так, когда никакие другие потоки не готовы, Поток. Сон (0) казался бы скорее хуже тот Поток. Урожай ().

23
задан Community 23 May 2017 в 12:17
поделиться

1 ответ

Согласно MSDN,

При использовании Спящего режима (0) Операционная система не планирует выполнение потока в течение указанного времени.

С использованием Yield () Оставшаяся часть текущего временного интервала потока уступается. Операционная система планирует вызывающий поток для другого временного отрезка в соответствии с его приоритетом и состоянием других потоков, доступных для запуска.

Так что в этом есть небольшая разница. Thread.sleep переведет поток в режим SLEEP с рекомендацией, чтобы он оставался там в течение заданного количества миллисекунд. Thread.yield переведет его в режим WAIT, чтобы он мог сразу же запуститься снова, или может вмешаться поток процесса более высокого уровня.

4
ответ дан 29 November 2019 в 03:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: