QT 多线程 依次执行的问题
QT,编写一个多线程,即开启9个线程,这九个线程的ID分别为1,2,3,4,5,6,7,8,9,每个线程将自己的ID按顺序打印到屏幕上,要求结果必须按照1,2,3,4,5,6,7,8,9...依次类推
本人刚开始接触多线程,尝试写了段程序,但是结果不对,我用计数器每隔100毫秒执行一次显示:即
主线程代码:
QMutex mutex;
void MyClass::handleProcess(){
QVector<QThread*> threads;
m_timer = new QTimer(this);
connect(m_timer, SIGNAL(timeout()), this, SLOT(onTimeOut()));
m_timer->setTimerType(Qt::PreciseTimer);
for (int k = 0; k<3; k++){
QThread *imageThread = new QThread;
MyImage *myImage = new MyImage(k);
myImage->moveToThread(imageThread);
connect(this, SIGNAL(imageCreate()), myImage, SLOT(startImageCreate()));
threads.append(imageThread);
}
m_timer->start(100);
}
void MyClass::onTimeOut(){
for (int i = 0; i<9; i++)
threads[i]->start();
emit imageCreate();
}
子线程代码:
class MyImage : public QObject
{
Q_OBJECT
public:
explicit MyImage(int index = 0);
public slots :
void startImageCreate(int index);
private:
int index;
};
extern QMutex mutex;
MyImage::MyImage(int No) :QObject()
{
index = No ;
}
void MyImage::startImageCreate(int index)
{
mutex.lock();
qDebug() << index << " running..\n";
mutex.unlock();
}
各位大神,我的主要目的就是想依次的执行线程,请问怎么加互斥量才会解决这个问题呢,在线等,拜谢!
本人刚开始接触多线程,尝试写了段程序,但是结果不对,我用计数器每隔100毫秒执行一次显示:即
主线程代码:
QMutex mutex;
void MyClass::handleProcess(){
QVector<QThread*> threads;
m_timer = new QTimer(this);
connect(m_timer, SIGNAL(timeout()), this, SLOT(onTimeOut()));
m_timer->setTimerType(Qt::PreciseTimer);
for (int k = 0; k<3; k++){
QThread *imageThread = new QThread;
MyImage *myImage = new MyImage(k);
myImage->moveToThread(imageThread);
connect(this, SIGNAL(imageCreate()), myImage, SLOT(startImageCreate()));
threads.append(imageThread);
}
m_timer->start(100);
}
void MyClass::onTimeOut(){
for (int i = 0; i<9; i++)
threads[i]->start();
emit imageCreate();
}
子线程代码:
class MyImage : public QObject
{
Q_OBJECT
public:
explicit MyImage(int index = 0);
public slots :
void startImageCreate(int index);
private:
int index;
};
extern QMutex mutex;
MyImage::MyImage(int No) :QObject()
{
index = No ;
}
void MyImage::startImageCreate(int index)
{
mutex.lock();
qDebug() << index << " running..\n";
mutex.unlock();
}
各位大神,我的主要目的就是想依次的执行线程,请问怎么加互斥量才会解决这个问题呢,在线等,拜谢!
...全文
相关推荐
QT信号与槽机制浅析
QT信号与槽机制浅析Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的 说法,简单点说就是如何在一个类的一个函数中触发另一个类的另一个函数调用,而且还要把相关的参数传递过去.好像这和回调函数也有点关系,但是消息机制可比回调函数有用
QT中sqlite多线程操作4个注意问题
总结了一下Qt中sqlite多线程操作遇到的几个问题,希望能对有需要的朋友一点帮助
基于UDP协议的多线程高速接收QT工程
一个高速udp接收程序,多线程数据保存,项目需要20M接收不丢包,测试在20M速度下可正常接收不丢包。
5个qt多线程例子
5个qt多线程例子,关于qt 多线程 TCP UDP socket 仅供参考
qt多线程高效下载文件
qt多线程下载文件的Demo,支持http协议,支持多任务下载


