前言
前面讲解了相关QThread的使用和同步概念,本节将着重讲解QThread同步的具体使用,下面将从 QMutex和QMutexLocker 展开讲解!
QMutex详解
QMutex 和 QMutexLocker 是基于互斥量的线程同步类,QMutex 定义的实例是一个互斥量,QMutex主要提供3个函数。
- lock(): 锁定互斥量,如果另外一个线程锁定了这个互斥量,它将阻塞执行直到其他线程
解锁这个互斥量。 - unlock(): 解锁-一个互斥量,需要与lock()配对使用。
- tryLock(): 试图锁定一个互斥量, 如果成功锁定就返回true;如果其他线程已经锁定了这
个互斥量,就返回false, 但不阻塞程序执行。
实例讲解
使用互斥量,对 DiceThread 类重新定义,不采用信号与槽机制,而是提供一个函数用于主线程读取数据。更改后的 DiceThread 类定义如下: