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

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

  • 相关阅读:
    [JSOI2008]巨额奖金(最小生成树计数)
    [HAOI2008] 糖果传递
    [SCOI2009]生日快乐
    BZOJ2821 作诗
    [HAOI2008]圆上的整点
    POJ1741
    AC自动机
    [JSOI2008]星球大战starwar
    二分图有关证明(感性版)
    初识Pentaho(一)
  • 原文地址:https://www.cnblogs.com/findumars/p/5642186.html
Copyright © 2011-2022 走看看