吸气剂设定器中的互斥体

Xaq*_*aqq 1 c++ qt

我想知道如何将mutex用于多线程应用程序.我的吸气剂是否也需要锁定?我找到了这篇文章.答案是肯定的,我需要保护getter函数,但这意味着我将能够一次执行一次读取,并且我想知道它是否可以改进.

TED的回答表明,如果setter的函数没有锁定互斥锁来执行写操作,那么你可以通过多线程可以同时读取数据的方式实现锁.我试图找到一些例子 - 阅读Qt的文档 - tought,QMutex没有isLocked()函数或类似的东西.那么你如何能够巧妙地实现这种"智能锁".

谢谢

Mig*_*uel 5

您需要一种称为读写器锁的特殊锁定机制.有了这个锁,任何数量的读者都可以同时访问资源,但是对于一个编写者来说,必须阻止所有读者线程.

看起来Qt有一个实现这种机制的QReadWriteLock类.