Что конкретно делает метод Thread.SpinWait?

214
23 марта 2018, 10:13

Из документации откровенно говоря ничего непонятно, все очень сумбурно. Что именно делает этот метод?

Answer 1

Русский машинный перевод не очень хорош, лучше смотреть в свежий английский оригинал:

SpinWait essentially puts the processor into a very tight loop, with the loop count specified by the iterations parameter. The duration of the wait therefore depends on the speed of the processor.

то есть

SpinWait на самом деле просто выполняет холостой цикл, количество итераций которого равно параметру iterations. Продолжительность ожидания, таким образом, зависит от скорости процессора.

Для чего такое может понадобиться? Например, для оптимизации блокировки: если заблокированный ресурс скорее всего будет через несколько тактов процессора освобождён, то имеет смысл перед уходом на ожидание в режим ядра (что является медленной операцией) прокрутить несколько холостых циклов в надежде, что ресурс за это время освободится. Именно это делает lock/Monitor.Enter.

READ ALSO
Как выдрать видеострим на флеше с сайта?

Как выдрать видеострим на флеше с сайта?

Приветствую всех! Есть Сайт, и есть необходимость качать видеострим к себе, затем транслировать его же, но уже без флеша, в перспективеВсе...

224
Как создать такой эффект на wpf

Как создать такой эффект на wpf

Помогите создать на wpf такой дизайн авторизации

228
Как убрать пустую строку Xml C#

Как убрать пустую строку Xml C#

Мне нужно вытянуть RSS данные для работы с InterfaxНо проблема это XML

212
Не выделяется треугольник в меше в Unity

Не выделяется треугольник в меше в Unity

Код с официального сайта Unity, с минимальными изменениями под себяПочему треугольники меша не выделяются, как должно?

225