您当前的位置: 首页 >  qt

lw只吃亿点.

暂无认证

  • 7浏览

    0关注

    47博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Qt互斥锁(QMutex)的使用、QMutexLocker的使用(含源码+注释)

lw只吃亿点. 发布时间:2022-03-18 23:30:37 ,浏览量:7

文章目录
  • 一、QMutexLocker和QMutex实现示例图
  • 二、QMutex和QMutexLocker的关系(个人理解)
  • 三、QMutex使用和QMutexLocker使用
    • 1.QMutex的使用
    • 2.QMutexLocker的使用
  • 四、检验QMutexLocker是否将传入的互斥锁锁定
    • 1.操作解释
    • 2.CMoveFuncClass(使用moveToThread实现,使用QMutexLocker)
    • 3.CThread类(继承QThread实现,单纯使用QMutex)
    • 4.CMainWindow调用类
  • 总结
  • 相关文章

一、QMutexLocker和QMutex实现示例图

下图为检测QMutexLocker是否上锁成功的示例图(两个线程使用同一个QMutex),源码在文章第四节(源码含详细注释)。 在这里插入图片描述 下图为不同QMutex运行时的效果(该图表明两个线程无关,并非sleep影响了另一个线程的运行) 在这里插入图片描述

二、QMutex和QMutexLocker的关系(个人理解)

互斥锁(QMutex)在使用时需要在进入和结束的时候使用对应的函数锁定和解锁。在简单的程序中还好,但是在结构复杂的程序中因为需要手动锁定和解锁,很容易忽略细节而出现问题,于是为了应对这种情况QMutexLocker便诞生了(为了简化简化互斥锁的锁定和解锁)。 QMutexLocker通常创建为局部变量,QMutexLocker在创建时传入一个并未锁定(若是锁定可用relock重新锁定或unlock解锁)的QMutex指针变量,并且会将QMutex变量锁定,在释放时会将QMutex变量解锁。(QMutexLocker创建时将传入的QMutex锁定,释放时将传入的QMutex解锁)

三、QMutex使用和QMutexLocker使用 1.QMutex的使用
void CThread::run()
{
        //互斥锁锁定
        m_mutex->lock();
        //输出当前线程的线程ID
        qDebug()             
关注
打赏
1654352885
查看更多评论
0.0525s