我遇到需要同时从/向文件读/写的情况,但操作范围有限:
这是一个高负载的应用程序,我想避免为每次读/写操作锁定文件
我打算打开2个文件 - 一个用于读取,另一个用于追加
会这样做会产生一些潜在的问题/错误吗?
如果我想避免每次读/写文件锁定,建议的做法是什么?
P.S。 golang,linux,ext4
答案 0 :(得分:2)
我假设随机阅读"你实际上是指"随意阅读"。
如果我正确理解您的用例,您不需要寻求或锁定或做任何手动操作。 UNIX通过O_APPEND
覆盖了这个。您可以这样做:
os.O_APPEND
打开文件。这样,每次写入,无论前面的任何操作,都将转到文件的末尾File.ReadAt
。这允许您为读取指定任意偏移量使用此方案可以避免任何类型的锁定:操作系统会为您执行此操作。由于缓冲区缓存,这种方案甚至效率不高:附加和读取几乎是独立的。