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"));
    }

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

  • 相关阅读:
    KindEditor简单的Demo使用
    动态从数据库读取菜单(ASP.NET版)
    完全卸载sql2005
    关于在xp(sp3 专业版)下安装sql2005开发版图解
    新手上路Tomcat 7.x和JDK的配置
    关于IE6幽灵字体
    【译】写个好的 CLI 程序
    【译】通过 Rust 学习解析器组合器 — Part 1
    【译】PHP 内核 — zval 基础结构
    【译】PHP 内核 — 字符串管理
  • 原文地址:https://www.cnblogs.com/findumars/p/5642186.html
Copyright © 2011-2022 走看看