инструкция pause обычно используется в цикле тестирования spinlock, когда какой-то другой поток владеет спин-блокировкой, чтобы смягчить сжатый цикл. Он сказал, что это эквивалентно некоторым инструкциям NOP. Может ли кто-нибудь сказать мне, как именно он работает для оптимизации спин-блокировки? Мне кажется, что даже инструкции NOP являются пустой тратой времени процессора. Будут ли они уменьшать использование ЦП?
Другой вопрос: могу ли я использовать инструкцию паузы для других подобных целей. Например, у меня есть занятый поток, который продолжает сканирование некоторых мест (например, очереди) для извлечения новых узлов; однако, иногда очередь пуста, и поток оправдывает трату времени процессора. спать поток и разбудить его другими потоками может быть вариант, однако поток критический, поэтому я не хочу, чтобы он спал. Может ли приостановить работу с инструкциями для уменьшения использования ЦП? В настоящее время он использует 100% процессор физического ядра?
Спасибо.