Je construis une application de partage de photos en utilisant parse comme mon backend. Maintenant, je veux mettre à jour l'atsortingbut numberOfLikes de chaque object photo après que l'user a cliqué sur le button "J'aime", en utilisant:
[photoObject incrementKey:@"numberOfLikes"]; [photoObject saveInBackground];
Ma question est, disons que plusieurs users ont aimé la même photo en même time, est-ce que ces requests seront dans une queue de traitement? (Will Parse les gère un par un?) En supposant que cette photo a 0 aime, alors 5 users l'aiment en même time, étant donné que les conditions du réseau sont les mêmes, le résultat final après l'logging sera-t-il de 1 ou 5?
Désolé si cette question semble stupide ou ma description est source de confusion. Je suis assez nouveau à Parse. Merci.
Certaines fonctions de Parse sont atomiques, incrementKey en fait partie.
https://parse.com/questions/concurrency-management-in-parse
La méthode incrementKey est atomique lors de la sauvegarde. Donc, le process va comme ceci:
Le joueur A appelle la méthode incrementKey sur le prix, et tente de sauvegarder (avec une fonction de callback). Le joueur B appelle la méthode incrementKey sur le prix et tente d'save (avec une fonction de callback.) Le callback du joueur A ou du joueur B s'exécute , le numberOfWins est 6. Le callback restants des lecteurs s'exécute, le nombreDeWins est 7.
Vous pouvez également implémenter une sorte de mécanisme de locking en utilisant ces fonctions comme vu dans cette question.
https://parse.com/questions/locking
La solution de David est intelligente et fonctionne (incrementKey est atomique). Si un object GameRequest est créé avec une valeur "challengers": 0, alors chaque challenger peut appeler incrementKey: @ "challengers". Si, après sauvegarde, la valeur de challengers est 1, alors ils sont le premier challenger engagé. J'aime particulièrement cette solution car elle fonctionne également pour les jeux N joueurs. De même, vous pouvez utiliser addUnique: (également atomique) pour append un ID user à une list de challengers.
Enfin pour répondre à votre question, il devrait être 5 car ils sont exécutés l'un après l'autre et non simultanément.