互斥量同步
QReadWriteLock的线程同步
QWaitCondition的线程同步
#include <QMutex>
#include <QThread>
QMutex mutex;
QWaitCondition newdataAvailable;
//生产者
mutex.lock();
diceValue=qrand(); //获取随机数
mutex.unlock();
newdataAvailable.wakeAll();//唤醒所有线程,有新数据了
msleep(500); //线程休眠100ms
//消费者
mutex.lock();
newdataAvailable.wait(&mutex);//会先解锁mutex,使其他线程可以使用mutex
mutex.unlock();
基于信号量的线程同步
#include <QSemaphore>
QSemaphore emptyBufs(2);//信号量:空的缓冲区个数,初始资源个数为2
int n=emptyBufs.available();
emptyBufs.release(2-n);
emptyBufs.acquire();//获取一个空的缓冲区