Использовать _mm_pause() или _tpause() для цикла занятости?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Использовать _mm_pause() или _tpause() для цикла занятости?

Сообщение Anonymous »

Моя спин-блокировка, очевидно, имеет цикл «занято-спин», а блокировку не удается получить:

Код: Выделить всё

while(try_lock() == false)
{
// Use _mm_pause() or _tpause() here?
}
Я заметил, что у меня нет _mm_pause() внутри цикла. Я понимаю, что пропуск этого параметра может привести к снижению производительности из-за барьеров/ограждений/упорядочения памяти?
Перед добавлением _mm_pause() я обнаружил _tpause():
https://www.felixcloutier.com/x86/tpause
Однако из руководства Intel Intrinsics Guide его использование кажется немного более сложным.Я хотел бы максимизировать производительность/не беспокоюсь о энергопотреблении.
Что мне следует использовать, и если это _t_pause(), как его правильно использовать ? Я не могу найти ни одного примера использования, даже на Github.
Архитектура будет построена на моделях Intel Xeon 2022+.
РЕДАКТИРОВАТЬ:
Я только что заметил, что задержка _mm_pause() составляет 140 циклов?!
[img]https:/ /i.sstatic.net/JUIBzS2C.png[/img]

К сожалению, я не заметил задержки для _tpause().

Подробнее здесь: https://stackoverflow.com/questions/788 ... -spin-loop
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»