При запуске QThread / QTimer происходит сбой приложения qt / qml с помощью std :: bad_alloc на устройстве Raspberry Pi - PullRequest
0 голосов
/ 19 мая 2019

Я разработал программное обеспечение для панели инструментов (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?

...