首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

关于多线程,该如何解决

2012-05-12 
关于多线程代码如下 头文件#ifndef MAINWINDOW_H#define MAINWINDOW_H#include QMainWindow#includeQTh

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

#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解锁

热点排行