繁体   English   中英

C ++线程安全对象

[英]C++ Thread-Safe Object

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

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

我是否只是将一个范围的互斥锁作为getter和setter的第一行? 或者如何设计这个看似简单的物体的最佳方法? 任何例子或链接都将非常感激(我很难绕过它)。

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

我真的很感激!

假设您的封装是正确的,那么getter和setter上的锁就足够了。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM