[英]What are the threading semantics for Cocoa file ops? e.g. NSData read/write methods
如果我在Cocoa應用程序中有兩個線程(並且說),那么我正在使用NSData +dataWithContentsOfFile:
從磁盤上的文件X讀取,而另一個線程正在同時更新或替換相同的文件X,例如-writeToPath:atomically:
?
我不熟悉Cocoa的標准文件讀/寫模式。 讀取操作能否看到損壞的中間文件? 如果是這樣,解決此問題的標准方法是什么? 使用POSIX函數可以有效地允許多個讀者但只允許一個獨家作家?
感謝您提供的見解,這些見識使我在Cocoa API和底層文件系統之間的理解之間架起了橋梁。
讀取操作能否看到損壞的中間文件?
如果您將atomically
設置為YES
則不會。 這樣做是將數據寫入臨時文件,然后用該臨時文件覆蓋預期的目標。 這是原子的(無論如何在本地文件系統上),因為這只是對目錄的快速編輯。
如果您要立即開始寫到預期的目標並且尚未完成,則讀可能僅獲取部分數據,即,您以atomically:NO
傳遞atomically:NO
。 因此,在這種情況下,請不要這樣做-通過YES
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.