Когда-то пытался средствами 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талкивался ли кто с проблемой?