zoukankan      html  css  js  c++  java
  • Qt QMutex的一点理解

    在Qt的多线程控制中,互斥量的访问最简单的控制是添加一个mutex锁,对一个函数或者变量锁定。

    一直不理解QMutex中的锁是如何运行的,或者说如何利用这个锁将变量进行锁定。官方实例是这样的:

     1 QMutex mutex;
     2 int number = 6;
     3 
     4 void method1()
     5 {
     6     mutex.lock();
     7     number *= 5;
     8     number /= 4;
     9     mutex.unlock();
    10 }
    11 
    12 void method2()
    13 {
    14     mutex.lock();
    15     number *= 3;
    16     number /= 2;
    17     mutex.unlock();
    18 }

      还是看不懂为什么会锁住变量,主要是没办法根据这个试例进行实验,后经过各种查资料研究一遍遍的试代码,还有从别人博客中的只言片语中,发现有这么一句话:“QMutex::lock()获取一个锁”。

      这说明只有一个锁,只能被一个QMutex得到,如果QMutex得不到这个锁,那它将不会执行紧随其后的代码,也就是在两个进程代码中需要共用一个QMutex类的实例,这样才能保证该实例是否获取到一个锁或者得不到一个锁。

      如果QMutex::lock()得不到这个锁,那么它将会一直等直到得到该锁为止,而另一个方法QMutex::tryLock()可以检测当前是否可以得到这个锁,如果可以得到则返回1,否则返回0(不会一直等,但如果可以得到锁,那就拿到锁,不会光判断而不获取锁),该函数只执行一次,不会一直等到得到锁为止。

  • 相关阅读:
    企业要主动淘汰五种人
    人力管理的核心:选、用、育、留
    张瑞敏:正确路线确定后,干部就是决定因素
    西点军校如何培养学员
    董事长如何找合适的搭档
    企业家何时应该放权
    会计基础视频
    同样劳动,为何结果不同?
    什么是真正的工作到位
    中国的人口和经济周期
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14656930.html
Copyright © 2011-2022 走看看