Запуск QTimer в основном и отдельном потоке

230
16 марта 2018, 14:10

В Qt приложении пи запуске таймеров и в основном и в отдельном потоке, программа падает. Можно ли это делать и как сделать корректно?

Падает при нескольких поочердных срабатываниях таймеров с такой ошибкой:

ASSERT: "bytes <= bufferSize" in file tools\qringbuffer.cpp, line 74

Текст программы:
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    MainObject* mObject=new MainObject();
    QThread* tThread=new QThread;
    SecondObject* sObject=new SecondObject();
    QObject::connect(tThread, SIGNAL(started()) , sObject, SLOT(startTimer()));
    sObject->moveToThread(tThread);
    tThread->start();
    return a.exec();
}
MainObject::MainObject(QObject *parent) : QObject(parent)
{
    mTimer=new QTimer(this);
    connect(mTimer, SIGNAL(timeout()), this, SLOT(mSlot()));
    mTimer->start(500);
    qDebug()<<"this->thread="<<this->thread()<<"mTimer->thread()="<<mTimer->thread();
}
void MainObject::mSlot()
{
    qDebug()<<"this->thread="<<this->thread();
}
SecondObject::SecondObject(QObject *parent) : QObject(parent)
{
    qDebug()<<"this->thread="<<this->thread();
}
void SecondObject::sSlot()
{
    qDebug()<<"thread="<<this->thread();
}
void SecondObject::startTimer()
{
    QTimer* sTimer=new QTimer(this);
    qDebug()<<"this->thread="<<this->thread()<<"sTimer->thread()="<<sTimer->thread();
    connect(sTimer, SIGNAL(timeout()), this, SLOT(sSlot()));
    sTimer->start(1000);
}
READ ALSO
вычисление констант и функций объекта Math

вычисление констант и функций объекта Math

хорошего дня Существует открытый код браузера Mozilla FireFoxКогда мы заходим на какой-либо сайт, то загружается множество jscript

192
Запуск программ на linux нажатием мышки(g++)

Запуск программ на linux нажатием мышки(g++)

Чтобы открыть скомпилированную в g++ программу, вынесенную с помощью -о output в отдельный файл, надо в терминале набирать/output

195
Как получить данные хранящиеся в записи динамической структуры

Как получить данные хранящиеся в записи динамической структуры

Проблема в следующемМне нужно чтобы в m в методе TakeElement попало число которое хранится в динамической структуре

224
Блокировка обьекта

Блокировка обьекта

Как использовать блокировки без создания mutex? Те

173