let*_*4be 4 io synchronization go
我有一种情况,我需要同时从/向文件读/写,但操作范围有限:
这是一个高负载的应用程序,我想避免每次读/写时都锁定文件
我打算打开 2 个文件 - 一个用于读取,另一个仅用于附加
这样做会产生一些潜在的问题/错误吗?
如果我想避免每次读/写的文件锁定,推荐的做法是什么?
ps golang, linux, ext4
我假设“随机读取”实际上是指“任意读取”。
如果我正确理解了您的用例,则您无需查找或锁定或手动执行任何操作。UNIX 通过O_APPEND. 您可以执行以下操作:
os.O_APPEND.打开文件。这样每次写入,无论之前的任何操作,都将转到文件末尾File.ReadAt. 这使您可以为读取指定任意偏移量使用此方案您可以避免任何类型的锁定:操作系统会为您完成。由于缓冲区缓存,该方案甚至不是低效的:追加和读取几乎是独立的。