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

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

  • 相关阅读:
    android创建自定义对话框
    激光裁剪的商务名片
    60个响应式的Web设计教程–能够手机访问!
    前端性能优化:使用Data URI代替图片SRC
    40个最好的Tumblr主题
    40个超酷的jQuery动画效果教程
    15个最好的jQuery timeline插件
    60+富有创意的宣传册设计
    Eclipse安装SVN
    EXPLAIN 关键字可以 查看 sql执行 的详细过程
  • 原文地址:https://www.cnblogs.com/findumars/p/5642186.html
Copyright © 2011-2022 走看看