假设两个异步操作尝试读取或写入给定文件夹上的同一文件。 iOS如何处理这个问题?操作是否排队?该应用程序崩溃?该文件被损坏?iphone - 文件系统如何响应同时访问同一个文件?
如果是由程序员来处理这个问题,我在哪里可以找到关于如何处理竞争条件,队列等信息或示例?
你们可以给我一个提示吗?
谢谢。
假设两个异步操作尝试读取或写入给定文件夹上的同一文件。 iOS如何处理这个问题?操作是否排队?该应用程序崩溃?该文件被损坏?iphone - 文件系统如何响应同时访问同一个文件?
如果是由程序员来处理这个问题,我在哪里可以找到关于如何处理竞争条件,队列等信息或示例?
你们可以给我一个提示吗?
谢谢。
我认为,当试图获取文件的文件描述符时,如果它已被使用,它应该会失败。
由于显然没有办法知道文件是否已打开,因此可能有办法锁定文件。
链接,可以帮助你:
最可能的答案是“该文件被损坏”。操作系统将不会做任何事情来防止多个线程同时写入文件,并且如果他们正在写入文件的重叠部分,则所有投注都将关闭。
所以,你最好的办法是强制你自己排队访问文件。有很多方法可以做到这一点。在较低的级别上,您可以使用NSLock
来防止同时访问,或者您可能希望使用调度队列。 Julio的答案提到的Concurrency Programming Guide是一个很好的参考。
呃,你认为“它应该失败”的基础是什么? – 2010-11-26 04:11:34