首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为作者-阅读器寻找最佳的boost文件锁机制

为作者-阅读器寻找最佳的boost文件锁机制
EN

Stack Overflow用户
提问于 2016-03-30 05:54:21
回答 2查看 1K关注 0票数 2

我在不同的目录中有以下文件:

代码语言:javascript
复制
\201603\30
           file_1
           file_2
\201603\31
           file_3
           file_4
           file_5

我的程序中有两个作者和两个读者,他们都是线程。

锁定将应用于目录而不是单个文件(例如\201603\30或\201603\31)。

我想使用boost库使我的程序可移植。

我已经搜索过,并被介绍给boost::interprocess::file_lock。我只是想知道,我真的需要一个‘进程间’锁在这里,这个锁可以在读者之间共享吗?除了boost::interprocess::file_lock,你还有其他建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-30 06:05:40

由于程序中的所有锁用户都在您的程序中,您需要进程间锁定干什么?file_lock将互斥锁放入一个文件中,该文件允许内核管理锁定/解锁。只有当多个进程需要尊重锁时,这才是有用的。

听起来,你只需要一个普通的读写锁就行了,它可以促进调用shared_lock。有关如何使用1:https://stackoverflow.com/a/989816/321772的示例,请参阅此答案

总之,共享锁允许多个线程获取用于读取的锁,但只允许一个线程将锁升级到写入器(不包括所有其他读取器/写入器)。

票数 1
EN

Stack Overflow用户

发布于 2016-03-31 22:04:09

正如另一个响应者所提到的,因为只有一个进程使用不需要锁定归档系统的文件,所以一个std::shared_mutex,甚至一个普通的旧std::mutex应该足够了。

然而,如果您需要有效地锁定多个进程,而现在是2017年或以后,您可以考虑在拟议的shared_fs_mutex v2:mutex.html的对等审查重写中使用其中一种算法。我在2017年提出警告的原因是,AFIO v2甚至还没有测试套件,它是高度alpha的代码,我还不能推荐任何人使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36300762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档