Qt学习之路---5.线程

来源:互联网 发布:win8.1优化 编辑:程序博客网 时间:2024/06/06 12:51

学习笔记,小白可以相互学习,大佬看到能告诉咱理解不对的地方就好了。


简单的创建线程,加互斥锁

/***********mythread.h***************************************/

#ifndef MYTHREAD_H#define MYTHREAD_H#include <QThread>#include <QDebug>#include<QMutex>class Mythread : public QThread{public:    Mythread(QString buf,QMutex *buf_lock):buf(buf),buf_lock(buf_lock){}    void run()    {        while(1)        {            buf_lock->lock();            sleep(2);            qDebug()<<"buf = "<<buf;            buf_lock->unlock();        }    }private:    QString buf;    QMutex *buf_lock;};#endif // MYTHREAD_H


/**********************thread.h***********************************/

#ifndef THREAD_H#define THREAD_H#include <QString>#include <QDebug>#include <QThread>#include <QMutex>class thread : public QThread{public:    thread(QString buf,QMutex *buf_lock):buf(buf),buf_lock(buf_lock){}    void run()    {        while(1)        {            buf_lock->lock();            int i = 0,j = buf.length() - 1;            QString temp;            while(i < j)            {                temp[0] = buf[i];                buf[i] = buf[j];                buf[j] = temp[0];                i++;                j--;            }            qDebug()<<"buf2 = "<<buf;            buf_lock->unlock();        }    }private:    QString buf;    QMutex *buf_lock;};#endif // THREAD_H


/***************************main.cpp***************************************/

#include <QCoreApplication>#include <mythread.h>#include <thread.h>#include <QMutex>int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    QString buf = "123456789";    QMutex buf_mutex;    Mythread x(buf,&buf_mutex);    x.start();    thread y(buf,&buf_mutex);    y.start();    return a.exec();}



原创粉丝点击