c++ - getter setter 中的互斥量

标签 c++ qt

我想知道如何在多线程应用程序中使用互斥量。我的 setter/getter 也需要锁定吗?我找到了 this邮政。答案是肯定的,我需要保护 getters 函数 但这意味着我将能够一次读取一个,我想知道它是否可以改进。

T.E.D's answer建议如果 setter 的函数没有锁定互斥量来执行写入,那么您可以以许多线程可以同时读取数据的方式实现锁定。 我试图找到一些示例 - 阅读 Qt 的文档 - tought,QMutex 没有 isLocked() 函数或类似的东西。那么如何才能真正实现这种“智能锁”。

谢谢

最佳答案

您需要一种特殊的锁定机制,称为 readers-writer lock .有了这个锁,任意数量的读者都可以同时访问资源,但是要让一个作者能够访问,所有读者线程都必须阻塞。

看起来 Qt 有一个 QReadWriteLock实现此机制的类。

关于c++ - getter setter 中的互斥量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7438948/

相关文章:

c++ - 复制带有参数的构造函数作为对派生类的引用

c++ - 按下任何 QPushButton 时应用程序范围内的日志记录

c++ - 自定义小部件中的 Qt 和死键

c++ - 色盲一个c++程序

c++ - 在内存开始分配的成员变量

c++ - 使用 CPP 插件在 gradle 中编译 C++ 代码

c++ - C++ 中的 constexpr int 和 constexpr double

c++ - 错误 : QApplication: No such file or directory?

c++ - Qt:父子小部件。关闭单个子部件是否意味着关闭其他子部件?

python - 如何创建组合框 QItemDelegate