我需要在GO中实现以下行为:
对于基于UNIX的系统,GO中的syscall包定义了flock函数,可用于以下列方式实现上述行为:
syscall包,不包括flock。鉴于此,我如何才能编写可以执行跨平台并具有上述行为的代码?
我想尝试在不进行特定于操作系统的调用或使用不安全的情况下实现此目的。
PS:我不想强制文件锁定,进程会在执行文件操作之前检查文件锁定
答案 0 :(得分:0)
使用编译器标志。
Windows标志:
// +build windows,!linux
...
Linux标志:
// +build linux,!windows
...
如果您想使用平台本机锁定功能。
解决方法可能是分配跨平台的(假设)单例资源,例如绑定到端口并依赖于仅可能一次的资源。绑定操作的错误条件将是决定因素。
就个人而言,我选择使用平台原生选项,只需创建一个界面,以便人们可以轻松添加测试,从而确保事情不会中断。