Пример кода:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Worker *worker = new Worker();
QThread *thread = new QThread;
worker->moveToThread(thread);
QObject::connect(thread, SIGNAL(started()), observer, SLOT(doWork()));
QObject::connect(worker, SIGNAL(finished()), thread, SLOT(quit()));
QObject::connect(worker, SIGNAL(finished()), worker,
SLOT(deleteLater()));
QObject::connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start(QThread::HighestPriority);
return a.exec();
}
void Worker::doWork() {
while (!is_stop) {
qDebug() << count;
count++;
thread()->msleep(1000);
}
emit finished();
}
Первые 20-30 секунд doWork() работает нормально, вывод происходит каждую секунду, затем вывод замедляется и происходит раз в 5-10 секунд, как будто macOS понижает приоритет процесса или что-то вроде этого. В чем может быть причина? Пробовал запускать от рута, повышать приоритет потока, не помогает. На Linux подобный код работает нормально.