Мое приложение включает резервное копирование определенной базы данных sqlite, установленной пользователем. Эта резервная копия основана на определенных условиях. Поэтому, чтобы сделать это, я использую рабочий объект (работающий на QThread), проверьте, соответствуют ли условия. Если условие соответствует, я беру резервную копию. Моя проблема в том, что я проверил диспетчер задач, и мое приложение всегда использует минимум 25% (так как поток работает). Если я отключу автоматическое резервное копирование, он вернется к нормальной жизни. Я делаю что-то не так или это нормально? Может кто-нибудь указать мне, как сохранить низкое использование процессора? Ниже мой код для автоматического резервного копирования потока.
void Automatic_Backup_Logic::Thread_Run()
{
QSettings settings(ORGANISATION, APPLICATION_NAME);
while(!m_Stop){
// First check the backup type
int backup_type = settings.value(BACKUP_TYPE).toInt();
QTime BackupTime = qvariant_cast<QTime>(settings.value(BACKUP_TIME));
// Check for backup time; if it's in range only then do backup
if(!Check_Backup_Time(BackupTime)){
continue;
}
switch (backup_type)
{
case BACKUP_TYPE_MANUAL:
// do nothing here
continue;
case BACKUP_TYPE_DAILY:
Backup_Daily();
break;
case BACKUP_TYPE_WEEKLY:
Backup_Weekly();
break;
case BACKUP_TYPE_MONTHLY:
Backup_Monthly();
break;
case BACKUP_TYPE_YEARLY:
Backup_Yearly();
break;
default:
break;
}
// Wait for the current backup minute to pass by to avoid multiple copies
QTime t1 = qvariant_cast<QTime> (settings.value(BACKUP_TIME));
while(t1.minute()==QTime::currentTime().minute()){
if(m_Stop)
return;
QCoreApplication::processEvents();
}
}
}
PS: я запускаю этот поток по стандартной процедуре Qt, которая создает рабочий поток и использует функцию moveToThread ()