Ответ
 
Опции вопроса Поиск в этом вопросе Опции просмотра
  #1  
Старый 30.09.2011, 12:59
Аватар для Guest
Guest
Вопрос
Сообщений: n/a
По умолчанию

Добрый день Переношу параллельные вычисления с OSX на Вындоуз. Нужна ф-ция "спиннера" (прокрутки). Я сделал такКод:void LockSpin( volatile int * theSpin ) { int spinCount = 0; while (InterlockedExchange(theSpin, 1) != 0) spinCount = (spinCount + 1) ^ 0xAAA;}void UnlockSpin( volatile int * theSpin ){ *theSpin = 0;}Понятно я могу использовать Qt ф-цию (вместо InterlockedExchange), эффект тот же. Вот как бы мне "прокручиваться" поумнее? Смущает напр ВикипедияЦитироватьНа современных процессорах цикл ожидания может выполнятся очень быстро за счет особенностей конвейерной архитектуры, что помимо наматывания холостых циклов может приводить к более интенсивному нагреву чем при обычной работе. В Pentium 4 и последующих моделях процессоров Intel введена специальная ассемблерная команда для вставки внутрь цикла pause (опкод 0xf3 0x90) предназначение которой проинструктировать процессор, что данный цикл является циклом ожидания.Было бы хорошо вместо while задействовать штатную ф-цию (как OSSpinLockLock в OSX). Имеется ли такая?Спасибо
Ответить с цитированием
Ответ



Похожие вопросы
Тема Автор Раздел Ответов Последний вопрос или ответ
TOP SPIN 2 Guest Архив вопросов и ответов 0 30.09.2011 09:16
Полное зависание с морганием caps lock и scroll lock Guest Новый архив 3 0 30.09.2011 04:34
зависание при запуске с синхронным морганием caps lock и scroll lock Guest Новые вопросы и ответы 3 0 27.09.2011 15:10



© www.otvetnemail.ru - Форум вопросов и ответов.