Documentation
¶
Overview ¶
Package lockfile 提供项目级与全局级文件锁。
基于 flock(2) 实现,进程退出或文件关闭时内核自动释放锁, 无残留问题。Linux 与 macOS 均支持。
用法 ¶
// 项目级锁
lk, ok, err := lockfile.TryLockLocal()
if ok {
defer lk.Close()
// 持有锁,执行主逻辑
}
// 全局锁
lk, ok, err := lockfile.TryLockGlobal()
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Lock ¶
type Lock struct {
// contains filtered or unexported fields
}
Lock 表示一个排他文件锁。 调用方在不再需要锁时必须调用 Close 释放。
func TryLockGlobal ¶
TryLockGlobal 获取全局级排他锁。 锁文件位于 ~/.dscli/locks/dscli.lock。
func TryLockLocal ¶
TryLockLocal 获取项目级排他锁。 使用 context.ProjectRoot 确定项目根目录, 锁文件位于 <projectDir>/.dscli/locks/dscli.lock。
Source Files
¶
- lockfile.go
Click to show internal directories.
Click to hide internal directories.