gpt4 book ai didi

C++ 线程安全对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:33 26 4
gpt4 key购买 nike

这似乎是一个非常简单的问题,但在我所有的研究中我还没有找到一个明确的例子......

我正在尝试构建一个自定义类,其中包含可通过 getter 和 setter 函数访问的私有(private)变量。此类将在全局范围 (extern) 中实例化一次,并将在我的应用程序中用作数据缓存。会被很多线程同时使用,99%用于读取,速度极其重要。有没有办法允许并发读取并只锁定写入? (我假设不是)

我是否只是在 getter 和 setter 的第一行包含一个作用域互斥量?或者如何设计这个看似简单的对象的最佳方式?任何示例或链接将不胜感激(我很难理解它)。

我确实编译了 Boost,所以它可用。

非常感谢!

最佳答案

假设您的封装是正确的,锁定 getter 和 setter 应该就足够了。

要提供并发读取,请查看 Readers-Writer 锁,它可以精确地提供您想要的同步级别。我想boost::shared_mutex符合要求。

由于这是一个缓存,如果您能够容忍过时的值,那么就性能而言,调查 RCU 对您来说可能是值得的,或读取-复制-更新。至少有 one library用于用户空间 RCU。

关于C++ 线程安全对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22492192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com