【问题标题】:Read-write concurrency读写并发
【发布时间】:2017-12-05 19:47:07
【问题描述】:

我有一个对象 A,其中包含一堆需要同步的字段。我想强制执行以下属性:

1) 多个线程一次可以读取对象的字段。 2) 如果至少有一个线程正在读取对象,则不能修改对象。 3) 如果正在修改对象,则没有线程可以读取该对象。

换句话说,我想要一个这样的锁,任何数量的读者都可以持有该锁。但是,如果任何作者持有锁,则没有其他人可以持有锁。

我该怎么做?我正在使用 C++,但我希望应该有一种独立于语言的方式。

【问题讨论】:

    标签: concurrency locking


    【解决方案1】:

    您正在寻找的概念是Readers-Writer-Lock。那里有 C++ 实现,最著名的是boost::thread 中的一个。这个想法是您使用单个(逻辑,通常在内部使用两个互斥锁实现)互斥锁进行读取和写入,您可以升级为需要唯一锁定(当您写入时),并且多个读取器可以在读取时同时锁定。

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多