【Qt】Qt线程同步之QMutexLocker

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iriczhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值