3个不稳定版本
0.2.0 | 2022年3月29日 |
---|---|
0.1.1 | 2022年3月11日 |
0.1.0 | 2021年11月27日 |
#1758 在 开发工具
7KB
94 行
allenap-flock-experiment
简单的交互式工具,用于实验和学习 flock
,它可在 Linux、macOS 和其他类 Unix 系统上使用。它的行为可能有些微妙,我在 2017 年撰写关于 flock
的文章时发现亲自操作很有帮助。
命令行工具
如果您已安装 Cargo,可以使用以下命令安装 allenap-flock-experiment:cargo install postgresfixture
。这将在 ~/.cargo/bin
中放置一个 allenap-flock-experiment
二进制文件,Cargo 安装过程可能已经将其添加到您的 PATH
中。
$ allenap-flock-experiment
Experiment with flock(2) on a file named `LOCK` in the current directory. Try:
o – to open the lock file (do this first)
c – to close the lock file
s – to acquire a shared lock
S – to acquire a shared lock without blocking
x - to acquire an exclusive lock
X - to acquire an exclusive lock without blocking
u - to unlock
U - to unlock without blocking
q - to quit.
h or ? - for help.
Opening lock file...
-> Opened lock file
Obtaining shared lock...
-> Obtained shared lock.
Obtaining exclusive lock...
-> Obtained exclusive lock.
Unlocking...
-> Unlocked.
Bye.
在上面的示例中,我按下了 o
、s
、x
、u
键,然后按 q
键退出。
这就完成了。然而,在第二个或第三个终端中同时运行它会更有趣。这应该能给您一个实际获取和释放锁的过程的直观印象。尝试以下操作
- 比较正常模式和阻塞模式。
- 同时在三台终端中运行
allenap-flock-experiment
,并在每个终端中获取一个共享锁。然后尝试在每个终端中获取一个独占锁。 - 在一个终端中获取一个独占锁,然后尝试在另一个终端中获取一个独占锁。在第一个终端中切换到共享锁。文档暗示第一个可能完全失去对锁的控制,但请查看您机器上的实际情况。
依赖关系
~1.5MB
~37K SLoC