【问题标题】:Configure shared_mutex to prefer writer over readers将 shared_mutex 配置为更喜欢写入器而不是读取器
【发布时间】:2022-01-05 15:52:14
【问题描述】:

我有一个用 gcc 编译的 C++ 应用程序,它使用 boost::shared_mutex。我将它们与shared_lock(读者)和unique_lock(作者)一起使用。

正如Does std::shared_mutex favor writers over readers? 中所解释的那样,我遇到了作家饥饿。

链接的文章说使用了 POSIX 线程库,并链接到另一篇文章 PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP 如何与 pthreads 一起使用。有描述说我应该初始化pthread_rwlock_init 并设置pthread_rwlockattr_setkind_np。但是,我的 pthread rw 锁是由 boost 创建的,因此我无法将此类自定义配置传递给它。

有没有一种方法可以让编写者在全球范围内优先于阅读者,这样 boost 会接受它,这样的代码会是什么样子?

有其他选择吗?

【问题讨论】:

    标签: linux gcc debian pthreads locking


    【解决方案1】:

    在您的项目中克隆并拥有shared_mutex gcc 文件,该文件很小,可以开箱即用地编译,并使用隐藏在_GLIBCXX_USE_PTHREAD_RWLOCK_T 标志后面的替代实现,该实现考虑到编写器饥饿。 boost::shared_lock 和 boost::unique_lock 使用这种替代实现开箱即用,其余应用程序不受影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2021-04-12
      • 1970-01-01
      相关资源
      最近更新 更多