如果我的Cocoa应用程序中有两个线程,并且(假设),我正在使用NSData +dataWithContentsOfFile:读取磁盘上的文件X,而另一个线程正在并发地更新或替换相同的文件X,比如说使用-writeToPath:atomically:?
我不熟悉Cocoa的标准文件读写模式是什么。读取操作是否会在文件中段出现损坏?如果是这样,那么解决这个问题的标准方法是什么?使用POSIX函数来有效地允许多个读取器,但只允许一个独占写入器?
感谢您的见解,它为我在Cocoa API和底层文件系统之间的理解搭建了桥梁。
发布于 2010-10-14 15:43:54
读取操作是否会看到文件中段损坏?
如果将atomically设置为YES,则不会。这样做是将数据写入临时文件,然后用临时文件覆盖预期的目标。这是原子的(无论如何,在本地文件系统上),因为它只是对目录的快速编辑。
如果您要立即开始写入预期的目标,并且还没有完成,那么读操作可能只会获得部分数据-即,您传递了atomically:NO。因此,在这种情况下,不要这样做-传递YES。
https://stackoverflow.com/questions/3930192
复制相似问题