завершить второй поток с бесконечным циклом

45
14 января 2022, 17:20

Создал второй поток с бесконечным циклом:

sensormanager = new(SensorManager);
pThread = new(QThread);
sensormanager->moveToThread(pThread);
QObject::connect(pThread, SIGNAL(started()), sensormanager, SLOT(slotAutoModeBalancer()));
QObject::connect(pThread, SIGNAL(finished()), sensormanager, SLOT(quit()));
pThread->start();

Где

slotAutoModeBalancer() {
     runFlag = true;
     while(runFlag) {
     for(int i = 0; i < numberBalanser; i++)
     {
         unsigned short int buf[2];
         buf[0] = 0;
         buf[1] = 0;
         sensorinfo->readVoltageBatteryAndTemperatureBalancer((i+1),buf);
         Balanser[i].Voltage = buf[0];
         Balanser[i].Index   = i+1;
         Balanser[i].Temperature = buf[1];
     }
     qsort(Balanser,numberBalanser,sizeof(Balanser[0]),cmp);
     int rc_1 = 0;
     int rc_2 = 0;
     for(int i = 0; i < numberBalanser;  i++)
     {
         if( ( Balanser[numberBalanser -1 - i].Voltage - Balanser[i].Voltage ) > 
     MaxHysteresis)
         {
             rc_1 = sensorinfo->writeStartChargeBalancer(Balanser[i].Index);
             rc_2 = sensorinfo->writeStartDischargeBalancer(Balanser[numberBalanser -1 - i].Index);
             Balanser[i].modeWork = ChargeBalancer;
             Balanser[numberBalanser -1 - i].modeWork = DischargeBalancer;
             qDebug()<<"Charge = " << Balanser[i].Index << rc_1 << "Discharge = "<< 
             Balanser[numberBalanser -1 - i].Index << rc_2 ;
         }
     }
     QThread4xx::msleep(5000);
}

Как можно остановить цикл while и выполнить команду аварийной остановки? Версия qt4.7.8.

READ ALSO
Браузер не заканчивает что то подгружать, после получения ответа от сервера

Браузер не заканчивает что то подгружать, после получения ответа от сервера

Я пишу свой небольшой http-сервер в учебных целяхУ меня есть две реализации ответа на статический запрос, идентичные по смыслу, просто в одной...

122
Создание модального окна с прогресс баром

Создание модального окна с прогресс баром

По нажатию на кнопку из пункта меню, происходит сначала вызов прогресс бара по истечению 5 секунд переход на диалоговое окноПопытался сделать...

115
Вылезла ошибка в codelite на linux

Вылезла ошибка в codelite на linux

выходит при компиляции проекта в codelite(ubuntu 1804)

52
C2440: Невозможно преобразовать const char* в PVOID

C2440: Невозможно преобразовать const char* в PVOID

Пишу программу-шутника, который будет менять изображение рабочего стола: В одной из строчек кода возникла ошибка:

148