Russian Qt Forum
Ноябрь 27, 2024, 02:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: SpinLock vs QMutex  (Прочитано 2244 раз)
kramer3d
Гость
« : Март 24, 2010, 11:39 »

Гуру многопоточного программирования, пожалуйста, подскажите, даст ли использование спинлока, использующего QAtomicInt, какое-либо преимущество над QMutex, при условии что QAtomicInt поддерживается архитектурой?

Защищаемый ресурс - это очередь заданий, по сути, закольцованный FIFO буфер, содержащий указатели, так что операции, выполняющиеся пока спинлок занят - это полдесятка инструкций, копирующих указатель и инкрементирующих значение tail/head.

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Март 24, 2010, 12:13 »

При наличии острой/интенсивной конкуренции за ресурс (для операций как Ваши) мутексы могут убить скорость так что будет даже медленнее чем на 1 процессоре.  С др. стороны если операции достаточно трудоемки - QAtomic просто съест процессорное время.

Примечание: вместо QAtomicInt лучше найти ОС ф-ции, напр на моей платформе OSSpinLockLock (OSSpinLockUnlock)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 22.