【发布时间】:2010-11-26 03:53:01
【问题描述】:
假设两个异步操作尝试在给定文件夹上的同一个文件中读取或写入。 iOS 是如何处理这个问题的?操作是否排队?应用程序崩溃?文件损坏了?
如果由程序员来处理这个问题,我在哪里可以找到有关如何处理竞争条件、队列等的信息或示例?
你们能给我一个提示吗?
谢谢。
【问题讨论】:
标签: iphone
假设两个异步操作尝试在给定文件夹上的同一个文件中读取或写入。 iOS 是如何处理这个问题的?操作是否排队?应用程序崩溃?文件损坏了?
如果由程序员来处理这个问题,我在哪里可以找到有关如何处理竞争条件、队列等的信息或示例?
你们能给我一个提示吗?
谢谢。
【问题讨论】:
标签: iphone
我认为在尝试获取文件的文件描述符时,如果它已经在使用中,它应该会失败。
由于显然无法知道文件是否已打开,因此可能有一种方法可以锁定文件。
可能对您有所帮助的链接:
【讨论】:
最可能的答案是“文件已损坏”。操作系统不会做任何事情来阻止多个线程同时写入文件,如果它们正在写入文件的重叠部分,那么所有的赌注都没有了。
因此,最好的办法是强制您自己排队访问文件。有很多方法可以做到这一点。在低级别,您可以使用NSLock 来防止同时访问,或者您可能想要使用调度队列。 Julio的回答提到的Concurrency Programming Guide是一个很好的参考。
【讨论】: