python 加锁_Python 中给文档加锁——fcntl

在 Python 中,如果想要给一个文档加锁,可以使用 fcntl 模块。其中有 flock 和 lockf 两种不同的方式。首先我们先了解一下在 Linux 中的文档锁。

Linux 中的文档锁

在 Linux 中,flock 和 fcntl 都是系统调用,而 lockf 则是库函数。lockf 则是 fcntl 的封装,因此 lockf 和 fcntl 在底层实现是一样的,对文档加锁的效果也是一样的。

首先说一些概念:

文档锁:针对整个文档的锁,如 flock。

记录锁:针对整个文档和文档部分字节的锁,如 fcntl、lockf。

排他锁:也可以称为写锁、独占锁,同一时间只有一个进程可以加锁。

共享锁:也可以称为读锁,支持多个进程并发读文档内容,但不可以写。

睡眠锁:一般和等待队列同时存在,当无法获取锁的时候会在等待队列中睡眠,直到满足条件被唤醒,如 semaphore、mutex。

自旋锁:自旋锁在被持有时,其它进程再申请时将不断”自旋”,不会陷入睡眠,直到持有者释放。为保证性能,自旋锁不应被持有时间过长。

劝告锁(建议锁):不要求进程一定要遵守,是一种约定俗成的规则,某进程持有建议锁的时候,其它进程依然可以强制操作,如 flock、fcntl。

强制锁:是内核行为,在系统调用违反约束条件时,内核将直接阻拦,如 fcntl(fcntl也可实

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值