mutex.h
#include <QThread>
class Thread_Mutex : public QThread
{
public:
Thread_Mutex();
void setMessage(QString msg);
protected:
void run();
private:
QString message;
static QMutex mutex;
};
mutex.cpp
#include "mutex.h"
#include <QDebug>
QMutex Thread_Mutex::mutex;//初始化静态成员
Thread_Mutex::Thread_Mutex()
{
// qDebug() << "mutex:" << mutex;
}
void Thread_Mutex::run()
{
//while(1)
//for(;;)
forever//死循环
//Qt中的,非标准C++标准库中的保留字
{
mutex.lock();//互斥量上锁
qDebug()<<message;
qDebug()<<message+message;
mutex.unlock();//互斥量解锁
sleep(2);
}
}
void Thread_Mutex::setMessage(QString msg)
{
message = msg;
}
main.cpp
#include <QThread>
#include "mutex.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Thread_Mutex thread_MutexA;
thread_MutexA.setMessage("A");
Thread_Mutex thread_MutexB;
thread_MutexB.setMessage("B");
thread_MutexA.start();
thread_MutexB.start();
return a.exec();
}