2010-11-26 4 views
2

Supposons que deux opérations asynchrones tentent de lire ou d'écrire dans le même fichier sur un dossier donné. Comment iOS gère-t-il cela? Les opérations sont-elles en file d'attente? L'application se bloque? le fichier est corrompu?iphone - comment le système de fichiers réagit en accédant au même fichier en même temps?

Dans le cas où c'est au programmeur de s'occuper de cela, où puis-je trouver des informations ou un exemple sur la façon de gérer les conditions de course, les files d'attente, etc.?

Pouvez-vous me donner un indice?

merci.

Répondre

1
+0

Euh, quelle est votre base pour penser "ça devrait échouer"? –

+0

Parce que je ne peux pas me rappeler et ne peux pas essayer maintenant si vous pouvez ouvrir un accès en lecture-écriture à un fichier alors qu'il est déjà par un autre programme. Et ayant le message d'erreur "Impossible d'ouvrir le fichier ..., le fichier est peut-être utilisé par un autre programme" est assez courant de nos jours. Donc, je suis assez sûr que lorsque vous essayez d'obtenir un descripteur de fichier sur un fichier déjà ouvert, la fonction renvoie un code d'erreur. –

+0

voulez-vous traiter la fonction sur le backend puis faire comme je crée la table et dans le téléphone backend proviennent de webservice et quand il finissent show sur tableview \t \t \t [NSThread detachNewThreadSelector: @selector (loadImagesInBackground :) àTarget: self withObject: [ NSNumber numberWithInt: indexPath.row]]; – GhostRider

1

La réponse la plus probable est "le fichier est corrompu". Le système d'exploitation ne fait rien pour empêcher plusieurs threads d'écrire simultanément dans un fichier et, s'ils écrivent dans des sections qui se chevauchent, tous les paris sont désactivés. Donc, votre meilleur pari est d'imposer votre propre mise en file d'attente sur l'accès au fichier. Il y a beaucoup de façons de le faire. À un niveau bas, vous pouvez utiliser un NSLock pour empêcher l'accès simultané ou vous pouvez utiliser une file d'attente d'acheminement. Le Concurrency Programming Guide mentionné par la réponse de Julio est une bonne référence.

Questions connexes