使用条件变量超时的读取器/写入器锁定
Posted
技术标签:
【中文标题】使用条件变量超时的读取器/写入器锁定【英文标题】:Reader / Writer Lock with timeout using conditional variable 【发布时间】:2009-01-27 13:43:02 【问题描述】:如何使用 C/C++ 中的条件变量编写具有超时的读取器/写入器锁?
【问题讨论】:
这会因平台而异... 我认为您的编辑没有意义。答案本质上是平台相关的,平台无关的库是没有意义的。 【参考方案1】:如果您只是在寻找图书馆,Boost.Thread 可能会满足您的需求。
【讨论】:
【参考方案2】:你可以看看Java的实现源码ReentrantReadWriteLock。
只需获取JDK 解压缩 src.zip 文件并搜索源代码。
【讨论】:
对不起,我忘了说:解决方案应该是 C/C++ 没关系。至少你可以从 Java 的实现中借鉴一些想法【参考方案3】:在当前的标准 C++ 中不支持这些东西,尽管 C++0x 将有一些线程支持(我还没有检查过多少)。因此,任何答案都必须依赖于平台,在非常普遍的意义上使用平台。
可以编写在不同底层系统中行为相似的库,并且有相当多的跨平台库。 (当然,如果底层平台的功能不同,这些都会导致效率低下。)可能有一个普遍接受的 C++ 线程库,可以在基于 Windows 和 Unix 的系统上工作(这几乎是你正在运行的任何东西现在在桌面上),但我不知道有一个副手。
因此,这个问题不能真正按要求回答。有必要在特定的平台或库上回答它,并且没有指定。如果再加上图书馆推荐的请求,这将是有意义的。
【讨论】:
【参考方案4】:看看Boost.Thread 库。具体来说:shared_mutex
和 upgradeable_mutex
对象。
【讨论】:
以上是关于使用条件变量超时的读取器/写入器锁定的主要内容,如果未能解决你的问题,请参考以下文章
Interlocked.Exchange() 具有依赖于读取锁定变量的自定义条件