QT——QReadWriteLock

it2022-05-05  123

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

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

转载于:https://www.cnblogs.com/hunandwly/p/8352053.html


最新回复(0)