Existe-t-il un moyen de remplir en toute sécurité un tableau d'octets à partir de plusieurs threads (par exemple, le premier thread remplit la première moitié, le deuxième thread utilise System.arraycopy) sans se synchroniser avec Java 6 ou 7? Les bibliothèques associées à jsr166 ne contiennent que des tableaux int (AtomicIntegerArray, ParallelIntegerArray).Comment remplir un tableau d'octets à partir de plusieurs threads en toute sécurité?
Répondre
Oui cela fonctionne. L'écriture dans un emplacement de tableau n'interfère pas avec les emplacements à proximité. Cependant, vous devez vous assurer que tous les threads sont terminés avant la lecture (une relation qui se passe avant). Le fait que vous utilisiez des tableaux ne fait aucune différence.
Oui, la jointure est là sous la forme de Future.get(). Je m'inquiète des alignements de cache. Par exemple un tableau [8192] écrit en 4096 + 4096 est susceptible de fonctionner sans problèmes, mais 4095 + 4097 pourrait ne pas fonctionner? – akarnokd
Il semble fonctionner, au moins le MD5 des données reste le même tout le temps. Je vous remercie. – akarnokd
Est-ce que cela rend les tableaux d'octets Java assez lents pour un accès à un seul thread, comparé à l'écriture d'octets utilisant des opérations d'octets non atomiques? Je veux dire, en supposant que l'implémentation JIT ou arraycopy a déplacé toute vérification de limites en dehors de la boucle. –
Oh, cela semble être un bon moyen d'avoir mal à la tête. :) Je pense que j'irais pour un tableau par thread, et plus tard les rejoindre.
- 1. Comment remplir en toute sécurité un tableau depuis un thread en le lisant dans un autre en Objective-C?
- 2. Dictionnaire .NET: énumère uniquement les threads en toute sécurité?
- 3. Comment remplir en toute sécurité avec des données et Refresh() un DataGridView dans une application multithread?
- 4. Comment utiliser un obfuscateur en toute sécurité?
- 5. Obtention d'événements à partir d'un thread en toute sécurité
- 6. Comment puis-je convertir en toute sécurité un tableau d'octets en une chaîne et revenir?
- 7. Comment créer en toute sécurité un NSInteger à partir d'un CGFloat?
- 8. Comment intégrer en toute sécurité un fichier flash (swf)?
- 9. Puis-je générer des threads en toute sécurité dans ASP.NET MVC?
- 10. Comment puis-je recueillir des données en toute sécurité à partir des sites Web des clients
- 11. Appel de Console.WriteLine à partir de plusieurs threads
- 12. Le code TeX peut-il être exécuté en toute sécurité à partir de sources non fiables?
- 13. Comment mettre à jour en toute sécurité un site Web en direct
- 14. Comment demander des données en toute sécurité via Google OAuth?
- 15. Comment supprimer en toute sécurité des fichiers dans Java
- 16. Comment remplir plusieurs fois la variable varray
- 17. Comment tester la sécurité des threads
- 18. En écho en toute sécurité aux données MIDI en C#
- 19. Comment exporter en toute sécurité tous les paramètres IIS d'un serveur à un autre?
- 20. Les plistes peuvent-ils être lus en toute sécurité à partir d'une source non fiable?
- 21. Remplir un zend :: formulaire sélectionner à partir de db
- 22. Toute façon de déclarer un tableau en ligne?
- 23. Comment puis-je remplir un JFace ContentProposalAdapter à partir d'Internet?
- 24. Remplir NSMutableArray à partir d'un autre NsMutableArray
- 25. Méthodes statiques et sécurité des threads
- 26. Est le C# '??' thread de l'opérateur en toute sécurité?
- 27. Mettre à jour un compte (champ) en toute sécurité dans SQL
- 28. Comment les services de génération de rapports SQL 2008 fonctionnent-ils en toute sécurité pour plusieurs applications?
- 29. Sécurité des threads sur ma méthode
- 30. Remplir JTable à partir d'une table de hachage en Java
Merci pour cette question! Je n'ai jamais pensé lire et écrire un tableau multithread. Ce sera certainement utile sur mon générateur de monde côté serveur et le processeur! Je peux aussi diviser les calculs d'états d'image lors du chargement initial sur le client! J'utilise déjà les tableaux plats comme multidimensionnels pour la vitesse, mais ceci ^. ^. – Underbalanced