我需要在 GO 中实现以下行为:
进程应该能够读取文件,而不管其他进程是否已锁定文件进行写入
进程应该先获得写锁,然后才能写入文件。这是为了保证多个进程不能写入同一个文件
一个进程不应该等待获得写锁,如果它不能获得锁,它应该继续前进
对于基于 UNIX 的系统,GO 中的 syscall 包定义了 flock 函数,可以通过以下方式实现上述行为:
将 syscall.flock 函数与 LOCK_EX 一起使用 | LOCK_NB 在写入文件之前尝试获取锁
在读取文件之前不要检查任何锁
GO 中的 Windows 系统调用包,不包括 flock。鉴于此,我怎样才能最好地编写可以执行跨平台并具有上述行为的代码?
我想尝试在不进行操作系统特定调用或使用不安全的情况下实现这一点。
PS:我不想要强制文件锁定,进程会在执行文件操作之前检查文件锁定
Qyouu
相关分类