zoukankan      html  css  js  c++  java
  • QReadWriteLock读写锁的一点测试(它是逻辑锁,并没有与实物相联系),只有锁住了读,才允许再次读,否则一概不允许

    QReadWriteLock m_lock;

    void MyWidget::Button1()
    {
    m_lock.lockForRead();
    ShowMessage(tr("111"));
    m_lock.lockForRead();
    ShowMessage(tr("222"));
    }
    此时,111和222都可以顺利执行(第一个是锁住了进行读,第二个还是读数据,所以放行)

    void MyWidget::Button1()
    {
    m_lock.lockForRead();
    ShowMessage(tr("111"));
    m_lock.lockForWrite();
    ShowMessage(tr("222"));
    }
    此时,111可以执行,222不能执行(因为之前已经被锁住了,相当于正在读数据,所以想写入内容的话,不行)

    void MyWidget::Button1()
    {
    m_lock.lockForWrite();
    ShowMessage(tr("111"));
    m_lock.lockForRead();
    ShowMessage(tr("222"));
    }
    此时,111可以执行,222不能执行(第一个正在写,第二个想读,当然没法进入)

    void MyWidget::Button1()
    {
    m_lock.lockForWrite();
    ShowMessage(tr("111"));
    m_lock.lockForWrite();
    ShowMessage(tr("222"));
    }
    此时,111可以执行,222不能执行(第一个正在写,第二个也想写,当然没法进入)

    ----------------------------------------------------------------------------------------------------------

    经过一夜的测试,

    void MyWidget::Button1()
    {
    m_lock.lockForWrite();
    ShowMessage(tr("111"));
    m_lock.lockForRead();
    ShowMessage(tr("222"));
    }

    的效果是,第二天还停在哪里,但程序没有崩溃。算是一个好消息(这个就是不能重复上锁的效果?)。

  • 相关阅读:
    2018年2月1日学习总结
    2018年1月31日学习总结
    创建oracle数据库表空间和用户
    广播权限声明
    广播接收器
    Android的屏幕限定符
    hibernate学习笔记(3)hibernate常用配置以及session对象
    hibernate学习笔记(2)持久化类测试
    hibernate学习笔记(1)基础配置与jar包
    struts2学习笔记(5)拦截器
  • 原文地址:https://www.cnblogs.com/findumars/p/5642186.html
Copyright © 2011-2022 走看看