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

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

  • 相关阅读:
    第三周课程总结实验报告
    Java第二周学习总结
    2019春总结作业
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
    第八周作业
    第二周课程总结
    2019春总结
  • 原文地址:https://www.cnblogs.com/findumars/p/5642186.html
Copyright © 2011-2022 走看看