un modèle spécial du lecteur rédacteurs
bonsoir, c'est un problème de synchronisation de plusieurs threads; en effet
- j'ai une ressources critique 'liste bloquante non bornée BlockingQueue "(en réalité moi j'ai besoin d'une file (FIFO)
- plusieurs écriture peuvent se faire à la fois (plusieurs threads peuvent déposer des messages simultanément)
- une seule lecture (un seul thread qui peut lire de cette liste)
- la contrainte principale "une lecture et une écriture peuvent se faire simultanément sur la liste s'il ne s'agit pas de la même case" c.à.d un thread lecture lit (tjrs) la première case et un autre thread peut écrire à la fin de la liste (3 ou 4 eme case) simultanément
j'ai réfléchi à une solution ; faire la méthode receive synchonized mais le pb qui me garantit qu'une lecture ne peut pas se faire dans une case où l'ecriture est en cours?
ma deuxième solution était de faire les deux méthodes (send et receive) synchnozide mais le pb qu'il aura une seul écriture ou lecture à la fois (3 eme contrainte non vérifiée:cry:)
comment faire? merci :P
je veux faire une communication entre des agent
merci nabil de m'avoir répondu (j'espère que t'es bien:P)
bon moi je voulais implémenter une communication entre deux agents (voir les comme des threads) et la ressource critiques est une liste chainé (LinkedList). j'ai réfléchi à cette solution de faire un sémaphore correspond à une case mais ça coute chère. de plus je cherche à utiliser le nouveau package de java (java.util.concurrent) qui gère la concurence et la synchronisation. j'ai trouver que ConcurrentLinkedQueue est trés approprié à l'environnement multi-threads,Mais j'ai pas trouver des documentation qui explique son fonctionnement à part JavaDOC. Est ce qu'il y a quelqu'un qui peut m'aider?. merci encore une fois:D
je veux savoir mecanisme de synchroniation de ConcurrentLinkedList en détaille
salut,
merci adiGuba de m'avoir répondu, mais je veux savoir exactement comment les 2 méthodes offer et poll fonctionnent, pour vérifier que la contrainte principale soit vérifié :
"une lecture et une écriture peuvent se faire simultanément sur la liste s'il ne s'agit pas de la même case" c.à.d un thread lecture lit (tjrs) la première case et un autre thread peut écrire à la fin de la liste (3 ou 4 eme case) simultanément"
Tout simplement Est ce que le mécanisme de synchronisation utilisé bloque tout l'accès à la liste ou bien seulement la case concernée?
merci :)