关于多线程
代码如下 头文件
#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解锁