如果我有以下代码:是否有增强功能以允许写偏向锁定?
#include <boost/date_time.hpp>
#include <boost/thread.hpp>
boost::shared_mutex g_sharedMutex;
void reader()
{
boost::shared_lock<boost::shared_mutex> lock(g_sharedMutex);
boost::this_thread::sleep(boost::posix_time::seconds(10));
}
void makeReaders()
{
while (1)
{
boost::thread ar(reader);
boost::this_thread::sleep(boost::posix_time::seconds(3));
}
}
boost::thread mr(makeReaders);
boost::this_thread::sleep(boost::posix_time::seconds(5));
boost::unique_lock<boost::shared_mutex> lock(g_sharedMutex);
...
独特的锁将永远不会被收购,因为总有一些将是读者。我想要一个unique_lock,当它开始等待时,阻止任何新的读锁访问互斥锁(称为基于我的wiki搜索的写偏好或写首选锁)。有没有简单的方法来做到这一点与提升?或者我需要写我自己的?
您是否确认写入锁定永远不会被获取?如果是这样,在什么操作系统?我正在查看pthread实现,它应该优先考虑写入锁定。我并不完全确定win32实现是怎么做的。 –
我没有真正验证这种情况 - 我确实在获得写入锁定之后获取新的读取锁定,这看起来像是一个死锁的秘诀。我正在寻找一个保证,假设所有的读锁最终都会被释放,写锁将被快速获得,并且不会由于新的读锁而延迟。 – Rollie