Existe-t-il un moyen de s'assurer que java vide le cache des écritures effectuées avant que CyclicBarrier ou CountDownLatch ne nous permette de continuer (comme le mot-clé synchronized) sans utiliser le mot-clé synchronisé?Vider le cache sur CyclicBarrier ou CountDownLatch comme lors de l'utilisation du mot-clé synchronisé
Répondre
Je pense que c'est déjà garanti par l'API.
http://download.oracle.com/javase/6/docs/api/java/util/concurrent/CyclicBarrier.html
effets de cohérence de la mémoire: Actions dans un fil avant d'appeler await() se-avant actions qui font partie de l'action de barrière, qui, à son tour se-avant actions suite à un retour réussi à partir du wait() correspondant dans d'autres threads.
Les résultats d'une écriture par un fil sont garantis pour être visibles à une lecture par un autre thread que si l'opération d'écriture arrive-avant l'opération de lecture. ... Actions avant l'appel de CyclicBarrier.await effect-before actions effectuées par l'action de barrière, et les actions effectuées par l'action de barrière se produisent avant les actions suite à un retour réussi de l'attente correspondante dans d'autres threads.
Cela signifie
thread 1 thread 2
write x1; write x2
barrier.await(); barrier.await();
read x2 read x1
aucune synchronisation supplémentaire est nécessaire; read x2
verra le résultat de write x2
- 1. Actualiser l'image ou vider le cache
- 2. Vider le cache d'instructions iOS
- 3. monotouch équivalent de LoadDatalWithBaseURL & vider le cache
- 4. Empêcher IIS de vider le cache
- 5. Comment purger/vider le cache de NSString
- 6. CountDownLatch InterruptedException
- 7. Comment vider le QWidget Painting-Cache?
- 8. Comment vider le cache d'instructions tout sur powerpc?
- 9. Vider le cache Core Duo avant le redémarrage?
- 10. Comment vider le cache de lecture de disque sous Windows?
- 11. Flexible CountDownLatch?
- 12. Comment vider le cache pour WebView?
- 13. Essayer de vider le cache de données PowerPC 750
- 14. Comment "annuler" un CountDownLatch?
- 15. Widget Android forçant RemoteView à vider le cache?
- 16. Vider le cache de page associé à un inode
- 17. Fil bloqué sur CountDownLatch attendre() lorsque le nombre est 0
- 18. android - notification locale, nécessité de vider le cache
- 19. Comment vider le cache DNS dans Windows Mobile par programmation?
- 20. Comment vider le cache de l'auto complete dans jquery
- 21. Vider le cache pour un site entier via ASP.NET/JavaScript?
- 22. Comment vider le cache d'objets dans sharepoint; programme
- 23. Cassandra sur SQL comme cache?
- 24. Javascript window.location.replace: Comment faire pour vider le cache dans IE
- 25. JBoss OrderedExecutor + CountDownLatch ne fonctionnent pas comme prévu?
- 26. Vider le contenu du tampon TLB du processeur x86
- 27. serveur contrôlé ou diaporama Web synchronisé?
- 28. Est-ce que Postgres fournit une commande pour vider le cache du tampon?
- 29. Comment puis-je vider le cache dans Firefox?
- 30. Vider la session sur la base de données lors du redémarrage du serveur Web?
oui, cela garantit l'ordre de fonctionnement, mais je n'ai vu aucun texte mentionnant le flush des valeurs de cache dans la mémoire (de sorte que les threads en attente verraient sûrement les résultats les uns des autres) - mon point est le mot-clé volatile est requis pour assurer que la valeur écrite sera partagée entre tous les threads en attente qui ont traversé la barrière –
le * arrive-avant * est un terme technique ici; si 'write x2' * arrive-before *' read x2', la lecture verra l'effet de l'écriture. vous pouvez penser à cela comme «rinçage de la cache»; Cependant, le modèle de mémoire Java n'utilise plus les concepts de cache/flush. – irreputable