package sharememory import ( "fmt" "os" "golang.org/x/sys/unix" ) func main() { // 打开文件 file, err := os.OpenFile("testfile.txt", os.O_RDWR|os.O_CREATE, 0o666) if err != nil { fmt.Println("Error opening file:", err) return } defer file.Close() // 加独占锁 fmt.Println("Acquiring exclusive lock...") err = unix.Flock(int(file.Fd()), unix.LOCK_EX) if err != nil { fmt.Println("Error acquiring exclusive lock:", err) return } defer unix.Flock(int(file.Fd()), unix.LOCK_UN) // 释放锁 fmt.Println("Exclusive lock acquired. Writing to file...") // 这里可以添加写文件的逻辑 fmt.Println("Writing complete.") // 打开文件 file, err = os.OpenFile("testfile.txt", os.O_RDONLY, 0o666) if err != nil { fmt.Println("Error opening file:", err) return } defer file.Close() // 加共享锁 fmt.Println("Acquiring shared lock...") err = unix.Flock(int(file.Fd()), unix.LOCK_SH) if err != nil { fmt.Println("Error acquiring shared lock:", err) return } defer unix.Flock(int(file.Fd()), unix.LOCK_UN) // 释放锁 fmt.Println("Shared lock acquired. Reading from file...") // 这里可以添加读文件的逻辑 fmt.Println("Reading complete.") }