【问题标题】:Read-write file locking in Obj-C (iPhone)Obj-C(iPhone)中的读写文件锁定
【发布时间】:2011-08-20 14:26:45
【问题描述】:

我正在寻找使用锁定读/写文件的方法。 iOS sdk 支持这个功能吗?

我看到有两种方法可以读写文件。

第一个是NSFileManager,另一个是NSInputStream/NSOutputStream,但是我还没有看到处理文件并发的方法,例如用写锁打开文件。

或者我必须自己实现那些锁定?

【问题讨论】:

    标签: iphone objective-c ios ios4 filesystems


    【解决方案1】:

    一般来说,iOS 应用程序不会打扰锁定文件,因为这些文档是与其他应用程序分开的沙盒。 flock() 在 iOS 中实现,但我没有亲自使用过。如果您有多个线程或类共享相同的文件,这可能会很有用。

    【讨论】:

    • 我会尝试flock(),甚至只是一个包含锁定文件列表的内部线程安全数据结构。例如,您可以使用 NSMutableSet 来包含所有已锁定文件的完整路径名列表。您必须确保在访问集合时使用@synchronized,但这应该不会太难。公平访问会有点难以实现——等待时间最长的线程才能访问文件。
    【解决方案2】:

    NSOutputStream outputStreamToFileAtPath:append: 保持对文件的写锁定。
    您仍然可以使用 fopenfstream(在 objc++ 中),它们将像在常规 linux 中一样工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多