2012-02-21 2 views
0

J'ai besoin de mettre à jour beaucoup d'objets dans une base de données coredata. J'effectue cette mise à jour dans un thread séparé pour éviter de bloquer l'interface utilisateur et afficher un simple HUD pendant cette opération. Puis-je avoir des problèmes de concurence?coredata multithread sans concurrence

grâce

Répondre

0

méfiez-vous que coredata est pas thread sauver.

Solution possible prévue par Apple:

  1. Créer un contexte d'objet géré distinct pour chaque fil et de partager un coordonnateur de magasin persistant unique . Il s'agit de l'approche généralement recommandée, à savoir .

  2. Créez un contexte d'objet géré distinct et un coordinateur de stockage persistant pour chaque thread. Cette approche offre une plus grande concurrence au détriment de la plus grande complexité (en particulier si vous devez communiquer les changements entre les différents contextes) et l'utilisation de la mémoire accrue.

Si utilisé la première option à plusieurs reprises lors de la mise à jour du modèle à partir d'un fil d'arrière-plan. Cela semble fonctionner.