【发布时间】: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