$operation 是 对文件加锁的方式,有以下值可选:
LOCK_SH (获取共享锁) / LOCK_EX (获取互斥锁) / LOCK_UN (解锁)
这里我们选用互斥锁,一个进程获取到互斥锁后,其他进程在尝试获取锁会被阻塞,直到锁被释放,即实现了自旋;
此外,还有一个参数 LOCK_NB,flock 在获取不到锁时,默认会阻塞住直到锁被其他进程释放,传入 LOCK_NB 与 LOCK_SH 或 LOCK_EX 进行或运算结果(LOCK_EX | LOCK_NB
),flock 在锁被其他进程占有时,不会阻塞,而是直接返回 false,这里仅作介绍,我们并不使用它。
来源: