Qt—线程同步之QMutexLocker
一、简介
【该类中的所有函数都是线程安全的】
QMutex目的是保护一次只有一个线程访问一个对象、数据结构或一段代码。QMutex通常在较为简单的代码中使用,如果代码复杂最好使用【QMutexLocker+互斥锁】进行多线程同步,这样可以很容易确保锁定和解锁操作执行一致。
在复杂函数和语句或异常处理代码中lock和unlock QMutex很容易出错,而且很难调试。在这种情况下,可以使用QMutexLocker替代。
QMutexLocker在一个需要锁定QMutex的函数中创建。当创建QMutexLocker时,互斥锁被锁定,后面可以使用unlock()和relock()对互斥锁进行解锁和重新锁定。如果互斥锁锁定了,互斥对象将在QMutexLocker销毁时被解锁。
二、成员函数API
(2-1)获取QMutex
返回QMutexLocker正在操作的互斥锁。
QMutex *QMutexLocker::mutex() const
(2-2)重新锁定
重新锁定一个未锁定的互斥锁。
void QMutexLocker::relock()
(2-3)解锁
解锁一个互斥锁。可以使用relock()再次锁定它。在销毁时不需要锁定。
void QMutexLocker::unlock()
三、使用示例
例如,下列代码进入函数时锁定了一个QMutex,在函数退出时解锁了互斥锁:
int myFunction(int flag)
{
//锁定一个Qmutex
mutex.lock();
int ret = 0;
switch (flag

最低0.47元/天 解锁文章
2241

被折叠的 条评论
为什么被折叠?



