我需要在GO中实现以下行为:
对于基于UNIX的系统,GO中的syscall包定义了flock函数,可以用以下方式实现上述行为:
GO中用于Windows的syscall包,不包括flock。考虑到这一点,我如何才能最好地编写能够执行跨平台并具有上述行为的代码?
我希望在不进行操作系统特定调用或使用不安全的情况下尝试实现这一目标。
PS:我不希望强制文件锁定,在执行文件操作之前,进程将检查文件锁。
发布于 2017-07-31 09:37:18
使用编译器标志。
窗口旗帜:
// +build windows,!linux
...用于linux的标志:
// +build linux,!windows
...如果您想使用平台本机锁定功能。
解决办法可能是分配资源,这些资源(据推测)是跨平台的单个对象,比如绑定到一个端口,并且只依赖它一次。绑定操作的错误条件将是决定因素。
就我个人而言,我会选择使用平台本机选项,只需创建一个接口,这样就可以轻松地添加测试,从而确保一切不会中断。
https://stackoverflow.com/questions/32798354
复制相似问题