读书人

关于多线程,该如何解决

发布时间: 2012-05-12 15:39:31 作者: rapoo

关于多线程
代码如下 头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QThread>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

private:
Ui::MainWindow *ui;
};

class MyThread1:public QThread
{
public:
virtual void run();
};

class MyThread2:public QThread
{
public:
virtual void run();
};

class MyThread3:public QThread
{
public:
virtual void run();
};
#endif // MAINWINDOW_H

源文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QThread>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MyThread1 a;
MyThread2 b;
MyThread3 c;
a.start();
b.start();
c.start();
a.wait();
b.wait();
c.wait();
}

MainWindow::~MainWindow()
{
delete ui;

}

void MyThread1::run()
{

for(int count=0;count<20;count++)
{
sleep(1);
qDebug("ping1!");

}
}

void MyThread2::run()
{

for(int count=0;count<20;count++)
{
sleep(1);
qDebug("ping2!");

}
}

void MyThread3::run()
{

for(int count=0;count<20;count++)
{
sleep(1);
qDebug("ping3!");

}
}
我想每次按
ping1
ping2
ping3依次输出
按我上面的程序是没有顺序的
求各位大侠帮忙


[解决办法]
没怎么弄过QT,我记得不是有锁么...
处理下线程同步就可以了吧
[解决办法]
看楼主的要求,不适合使用多线程。
[解决办法]
代码太乱了 没看
加锁可以用互斥量 Qt下有QMutex
在读写临界变量的时候lock一下,则另一个线程的mutex在lock的时候不会执行 会休眠直到第一个mutex解锁

读书人网 >QT开发

热点推荐