Я разработал программное обеспечение для панели инструментов (Qt / qml).Я реализовал рабочий класс для генерации данных для панели мониторинга.
Я переместил рабочий класс в QThread, чтобы сделать приложение многопоточным.И использовал QTimer для запуска слота doWord ():
TController::TController(QObject *parent) : QObject(parent)
{
_worker = new TDataLoader;
_worker->moveToThread(&_workerThread);
_timer.setInterval(50);
_rpms_timer.setInterval(200);
connect(&_timer, SIGNAL(timeout()), _worker, SLOT(doWork()));
connect(&_rpms_timer, SIGNAL(timeout()), _worker, SLOT(readRPMs()));
_workerThread.start();
_timer.start();
_rpms_timer.start();
}
В рабочих методах doWork и readRPMS генерируются только некоторые списки.
Это приложение работает без проблем в Win и работает в течение нескольких дней без проблем.Но если я запускаю его на Raspberry Pi, через несколько секунд я получаю следующую ошибку:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted
Также я попытался прокомментировать соединения.Но ошибка все-таки произошла!Даже я пытался удалить qthread для работы только с QTimer, но на удивление ошибка возникла снова!
Так в чем же проблема использования QThread или QTimer в Raspberry Pi?