首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止linux flock(2)的独占锁请求匮乏?

如何防止linux flock(2)的独占锁请求匮乏?
EN

Stack Overflow用户
提问于 2011-10-08 05:38:45
回答 1查看 799关注 0票数 6

我在linux中使用flock(2)来控制对自制数据库中资源的访问,使用共享和独占锁定模式。我发现,如果授予共享锁,那么另一个进程也可以获得共享锁,而不管是否存在等待排它锁的阻塞进程。这意味着对于具有许多重叠读取器的流行资源,独占锁请求可能会在很长一段时间内,甚至永远不能使用。

此行为与flock(2)手册页并不矛盾,但它让我感到惊讶,因为此代码已经在FreeBSD和OS-X中运行多年,没有出现任何问题。我的猜测是,BSD系统必须实现某种类型的队列,以防止排它锁永远饥饿。

我的主要问题是,有什么简单的技巧或编程模式可以防止我的独占锁饿死吗?

第二个问题,为了满足我的好奇心,有没有人知道这在我怀疑的BSD系统上是否真的不同?

EN

回答 1

Stack Overflow用户

发布于 2011-10-10 18:17:49

我在FreeBSD 7.2上遇到了完全相同的问题,并且发现没有办法在flock()上防止编写器饥饿。您必须选择其他锁定方法,如SysV IPC或简单的停止标志文件。

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

https://stackoverflow.com/questions/7693107

复制
相关文章

相似问题

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