2つの非同期操作で、指定されたフォルダの同じファイルを読み書きしようとしたとします。 iOSはそれをどう扱うのですか?操作はキューに入れられていますか?アプリがクラッシュしますか?ファイルが壊れますか?iphone - ファイルシステムが同時に同じファイルにアクセスする方法を教えてください。
これに対処するのはプログラマに任されますが、情報や競合状況、キューなどを扱う方法の例はどこにありますか?
あなたは私にヒントを教えてもらえますか?
ありがとうございました。
2つの非同期操作で、指定されたフォルダの同じファイルを読み書きしようとしたとします。 iOSはそれをどう扱うのですか?操作はキューに入れられていますか?アプリがクラッシュしますか?ファイルが壊れますか?iphone - ファイルシステムが同時に同じファイルにアクセスする方法を教えてください。
これに対処するのはプログラマに任されますが、情報や競合状況、キューなどを扱う方法の例はどこにありますか?
あなたは私にヒントを教えてもらえますか?
ありがとうございました。
ファイルのファイル記述子を取得しようとすると、すでに使用中の場合は失敗するはずです。
ファイルが既に開いているかどうかを知る方法がないので、ファイルをロックする方法がある可能性があります。あなたを助けるかもしれ
リンク:
最も可能性の高い回答は、「ファイルが破損する」ことです。 OSは、複数のスレッドが同時にファイルに書き込むのを防ぐために何もしません。また、ファイルの重複セクションに書き込んでいる場合、すべてのベットはオフになります。
したがって、ファイルへのアクセス時に独自のキューイングを実行することをお勧めします。それにはたくさんの方法があります。低いレベルでは、同時アクセスを防ぐためにNSLock
を使用するか、ディスパッチキューを使用することができます。フリオの答えで言及されたConcurrency Programming Guideは良い参考資料です。
「これは失敗するはず」と思うあなたの基礎は何ですか? –
私は覚えていないし、別のプログラムによってすでにファイルに読み書きアクセスを開くことができれば、今試みることはできません。そして、 "ファイルを開けませんでした...、ファイルが別のプログラムで使用されている可能性があります"というエラーメッセージが表示されるのは、今日では非常に一般的です。だから私はかなり開いているファイルにファイル記述子を取得しようとすると、関数がエラーコードを返すことを確信しています。 –
バックエンドで機能を処理したいのですが、テーブルを作成してバックエンドの電話機のようにして、Webサービスから来て、テーブルビューに表示されたら\t \t \t [NSThread detachNewThreadSelector:@selector(loadImagesInBackground :) toTarget:self withObject: NSNumber numberWithInt:indexPath.row]]; – GhostRider