我们已经实现了一个读写器锁
typedef boost::unique_lock<boost::shared_mutex> WriterLock;
typedef boost::shared_lock<boost::shared_mutex> ReadersLock;
我们有许多多线程阅读器,而编写器只有几个。读取器与其他读取器共享访问权限,但阻止写入器。Writer 阻塞,直到它拥有对资源的独占访问权。
我们在 boost 文档中找不到这个......防止 Writer 饥饿的政策是什么?
例如,如果有很多读者都从一个线程池中敲锁,那么在作者最终获得锁之前,是否有任何保证尝试锁的次数上限?
我们看到的性能数据似乎表明写入必须等到根本没有读者,并且在极少数情况下这是很长时间,因为新读者可以在当前读者正在接受服务时请求锁定。在这种情况下,在我们的代码中,作者似乎必须等待很长时间,直到根本没有读取。
我们更喜欢类似队列的系统,当写入者请求锁定时,所有当前的读取器都会耗尽,但所有新进入的读取器都会阻塞在写入器请求之后。
Boost 中可升级锁概念的行为是什么? 提升线程
它没有说明它如何处理作家饥饿。