Russian Qt Forum

Qt => Общие вопросы => Тема начата: kramer3d от Март 24, 2010, 11:39



Название: SpinLock vs QMutex
Отправлено: kramer3d от Март 24, 2010, 11:39
Гуру многопоточного программирования, пожалуйста, подскажите, даст ли использование спинлока, использующего QAtomicInt, какое-либо преимущество над QMutex, при условии что QAtomicInt поддерживается архитектурой?

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



Название: Re: SpinLock vs QMutex
Отправлено: Igors от Март 24, 2010, 12:13
При наличии острой/интенсивной конкуренции за ресурс (для операций как Ваши) мутексы могут убить скорость так что будет даже медленнее чем на 1 процессоре.  С др. стороны если операции достаточно трудоемки - QAtomic просто съест процессорное время.

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