Question

Lire sur le Documentation RecordStore, on peut lire ce qui suit:

Record store implementations ensure that all individual record store operations are atomic, synchronous, and serialized, so no corruption will occur with multiple accesses.

Et puis lors de la phrase suivante:

However, if a MIDlet uses multiple threads to access a record store, it is the MIDlet's responsibility to coordinate this access or unintended consequences may result.

Je ne sais pas quoi faire de cela. Les opérations sont atomiques et synchrones, mais je dois synchroniser l'accès moi-même? En supposant que je n'aurais pas besoin d'itérer sur les enregistrements, quel type de synchronisation ai-je besoin pour avoir pour des fonctions ADD / UPDAGE / DELETE simples?

Et au cas où j'aurais besoin d'itération, si j'utilise un RecordEnumeration, fait le enumerateRecords Méthode Prenez un instantané du RecordStore, ou est-il directement connecté?

Était-ce utile?

La solution

Cependant, si un midlet utilise plusieurs threads pour accéder à un magasin de disques, il est de la responsabilité du milieu de coordonner cet accès ou des conséquences imprévues peuvent en résulter.

Ce que je pense que cela signifie, c'est que deux fils lisent et écrivent simultanément des enregistrements dans un magasin produiront probablement des résultats indésirables; en particulier lorsque vous comptez sur un magasin dans un ordre particulier, ou pour que les enregistrements aient des indices connus.

Votre deuxième question est répondue dans le Javadoc pour RecordStore.enumerateRecords():

keepUpdated - Si c'est vrai, l'énumérateur gardera son courant d'énumération avec tout changement dans les enregistrements du magasin d'enregistrements. Utilisez avec prudence car il y a des conséquences de performance possibles. Si FALSE, l'énumération ne sera pas maintenue à jour et peut retourner des enregistrements pour les enregistrements qui ont été supprimés ou manquer des enregistrements qui sont ajoutés plus tard. Il peut également retourner les enregistrements hors de l'ordre qui ont été modifiés après la construction de l'énumération. Notez que toutes les modifications des enregistrements dans le magasin d'enregistrements sont reflétées avec précision lorsque l'enregistrement est récupéré plus tard, soit directement, soit par l'énumération. La chose qui est risquée en définissant ce paramètre faux est l'ordre de filtrage et de tri de l'énumération lorsque les enregistrements sont modifiés, ajoutés ou supprimés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top