加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

如何让linux flock(2)免于独占锁定请求?

发布时间:2020-12-14 01:39:32 所属栏目:Linux 来源:网络整理
导读:我在 linux中使用flock(2)来控制对homespun数据库中资源的访问,使用共享和独占锁定模式.我发现如果授予共享锁,那么另一个进程也可以获得共享锁,无论是否有阻塞进程等待独占锁.这意味着对于具有许多重叠读者的流行资源,独占锁定请求可能会长时间饿死,也许永远
我在 linux中使用flock(2)来控制对homespun数据库中资源的访问,使用共享和独占锁定模式.我发现如果授予共享锁,那么另一个进程也可以获得共享锁,无论是否有阻塞进程等待独占锁.这意味着对于具有许多重叠读者的流行资源,独占锁定请求可能会长时间饿死,也许永远.

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

我的主要问题是,是否有任何简单的技巧或编程模式来保持我的独家锁定不会挨饿?

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读