Здравствуйте! Я новичок в QT,ранее почти не работал с потоками, хотелось бы навести справки как правильно пользоваться потоками,параллельно, прочитал достаточно много, каша в голове, усвоить пока не получается...
Вот пример: есть класс identificator, .h:
class identificator:public QObject {
Q_OBJECT
public:
identificator();
virtual ~identificator();
private:
int id;
private slots:
void printID();
public:
void setID(int i);
int getID();
signals:
void finished();
};
.cpp:
#include "identificator.h"
#include <stdio.h>
identificator::identificator() {
id=0;
}
identificator::~identificator() {
// TODO Auto-generated destructor stub
}
void identificator::setID(int i)
{
id=i;
}
int identificator::getID()
{
return id;
}
void identificator::printID()
{
for(;;)
{
printf("%d\n",this->getID());
}
emit finished();
}
а вот main.cpp:
#include <QtCore>
#include <QCoreApplication>
#include <QApplication>
#include "myThread.h"
#include "identificator.h"
#include <stdio.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
printf("Hello\n");
identificator *first=new identificator();
identificator *second=new identificator();
QThread *thread1=new QThread;
QThread *thread2=new QThread;
first->setID(3);
second->setID(4);
QObject::connect(thread1, SIGNAL(started()), first, SLOT(printID()));
QObject::connect(thread2, SIGNAL(started()), second, SLOT(printID()));
QObject::connect(first, SIGNAL(finished()), thread1, SLOT(quit()));
QObject::connect(second, SIGNAL(finished()), thread2, SLOT(quit()));
thread1->start();
thread2->start();
return a.exec();
}
Ожидаю, что в консоль будет выводится числа 3 и 4, вразнобой,бесконечно долго, но при запуске в консоль выводится только 3.
Очень прошу, объясните мне пожалуйста, как добиться их параллельной работы?
Заранее спасибо!