线程使用之读写锁
2017-06-01 10:13
141 查看
readwritelock.h
readwritelock.cpp
main.cpp
#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(); }
相关文章推荐
- vb.net的异步读写数据流(使用线程、委托)
- 2.使用synchronized关键字实现多线程的同步和互斥(不同线程同时读写同一数据)
- 笔记7:vb.net的异步读写数据流(使用线程、委托)
- vb.net的异步读写数据流(使用线程、委托)
- 使用RCU技术实现读写线程无锁
- 读写锁 要写线程优先那么还可以使用条件变量的方法,具体做法可以参考msdn。
- 使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下读写绝对扇区的方法
- python 进行多线程编程,使用Semaphore控制线程数
- 使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下读写绝对扇区的方法
- 在WinFrom应用中,如果使用后台线程来操作界面应调用Control.Invoke()方法
- COM 经验的八个教训(7):使用线程或异步调用来避免 DCOM 超时设定太长
- 使用JavaScript对XML文件进行读写
- 如何使用线程
- 使用wwAppConfiguration类库来轻松读写应用程序配置信息
- 使用线程
- 在你的服务器端代码中使用线程和创建异步处理(3)
- 使用Java实现对dbf文件的简单读写
- 在mfc中使用线程局部数据tls
- clientdataset不能在线程中使用?
- 在你的服务器端代码中使用线程和创建异步处理(结束)