首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cocoa文件操作的线程语义是什么?例如NSData读/写方法

Cocoa文件操作的线程语义是什么?例如NSData读/写方法
EN

Stack Overflow用户
提问于 2010-10-14 12:56:36
回答 1查看 199关注 0票数 0

如果我的Cocoa应用程序中有两个线程,并且(假设),我正在使用NSData +dataWithContentsOfFile:读取磁盘上的文件X,而另一个线程正在并发地更新或替换相同的文件X,比如说使用-writeToPath:atomically:

我不熟悉Cocoa的标准文件读写模式是什么。读取操作是否会在文件中段出现损坏?如果是这样,那么解决这个问题的标准方法是什么?使用POSIX函数来有效地允许多个读取器,但只允许一个独占写入器?

感谢您的见解,它为我在Cocoa API和底层文件系统之间的理解搭建了桥梁。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-14 15:43:54

读取操作是否会看到文件中段损坏?

如果将atomically设置为YES,则不会。这样做是将数据写入临时文件,然后用临时文件覆盖预期的目标。这是原子的(无论如何,在本地文件系统上),因为它只是对目录的快速编辑。

如果您要立即开始写入预期的目标,并且还没有完成,那么读操作可能只会获得部分数据-即,您传递了atomically:NO。因此,在这种情况下,不要这样做-传递YES

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3930192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档