簡體   English   中英

Cocoa文件操作的線程語義是什么? 例如NSData讀/寫方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM