Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: Akon от Ноябрь 20, 2011, 21:55



Название: ScopedThreadPriority
Отправлено: Akon от Ноябрь 20, 2011, 21:55
Когда-то пытался средствами Qt сделать сабж (RAII обертка) - сходу не получилось и плюнул. Проблема была с QThread::InheritPriority, чего-то там не восстанавливалось обратно.

Код:
class ScopedThreadPriority
{
   ...

public:
  explicit ScopedThreadPriority(QThread::Priority priority = QThread::TimeCriticalPriority) :
    priority_(QThread::currentThread()->priority())
  {
    QThread::currentThread()->setPriority(priority);
  }
  ~ScopedThreadPriority()
  {
    QThread::currentThread()->setPriority(priority_);
  }

private:
  QThread::Priority priority_;
};

Using:
{
  // QThread::currentThread()->setPriority(QThread::TimeCriticalPriority);
  ScopedThreadPriority scopedPriority(QThread::TimeCriticalPriority);
  ...
}
// previous thread priority restores here

Cталкивался ли кто с проблемой?