QT 多线程 依次执行的问题

purplepare purplepare 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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();
}

各位大神,我的主要目的就是想依次的执行线程,请问怎么加互斥量才会解决这个问题呢,在线等,拜谢!
...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
purplepare
Qt 21,503 成员 26,693 内容