线程使用之读写锁

来源:互联网 发布:万科荣华金域名城1号楼 编辑:程序博客网 时间:2024/06/08 06:53

readwritelock.h

#include <QThread>class ReadThread : public QThread{public:    ReadThread();protected:    void run();};class WriteThread : public QThread{public:    WriteThread();protected:    void run();};

readwritelock.cpp

#include "readwritelock.h"#include <QDebug>#include <QReadWriteLock>//读写锁QReadWriteLock rwLock;int global2 = 0;ReadThread::ReadThread(){}void ReadThread::run(){    while(1)    {        //qDebug() << rwLock;//error        rwLock.lockForRead();//上读锁        qDebug()<< currentThreadId()                << ", Read:"                << global2;        qDebug() << "read finished!-----------";        rwLock.unlock();//解锁        sleep(1);    }}WriteThread::WriteThread(){}void WriteThread::run(){    while(1)    {        rwLock.lockForWrite();//上写锁        int tmp = global2;        global2++;        qDebug()<< currentThreadId()                << ", Write: "                << tmp                << "-->"                << global2;        qDebug() << "write finished!===================";        rwLock.unlock();//解锁        sleep(1);    }}

main.cpp

#include <QApplication>#include <QThread>#include "readwritelock.h"int main(int argc, char *argv[]){    QApplication a(argc, argv);    WriteThread *w1 = new WriteThread;    WriteThread *w2 = new WriteThread;    ReadThread *r = new ReadThread;    ReadThread *r2 = new ReadThread;    w1->start();    w2->start();    r->start();    r2->start();    return a.exec();}
原创粉丝点击