PDA

View Full Version : [Java] Lettura concorrente stessi elementi in Buffer


Dark Phoenix
20-08-2007, 16:14
Più che un problema è una ricerca.... Almeno io ho cercato e non ho trovato.

Vi volevo chiedere se esiste da qualche parte nelle librerie una classe sullo stampo delle BlockingQueue che consente a più Thread di leggere da un buffer unico gli elementi in modo tale che un elemento nel buffer venga tolto solo quando tutti i Thread hanno letto quell'elemento dal Buffer? (logicamente dandogli informazioni iniziali sul numero di thread)

In poche parole non mi va di implementarlo :p

andbin
20-08-2007, 18:45
Vi volevo chiedere se esiste da qualche parte nelle librerie una classe sullo stampo delle BlockingQueue che consente a più Thread di leggere da un buffer unico gli elementi in modo tale che un elemento nel buffer venga tolto solo quando tutti i Thread hanno letto quell'elemento dal Buffer? (logicamente dandogli informazioni iniziali sul numero di thread)Non credo che esista già una cosa del genere tra le classi del framework standard di Java (ovviamente non ne posso essere certo al 100%).

Ma si può fare tranquillamente. Chiaramente è necessario fare in modo che i thread si "registrino" preventivamente presso la coda, in modo che quest'ultima sappia quanti sono i thread che possono prelevare gli elementi.
Come gestire questa cosa ovviamente è da valutare .... bisognerebbe pensarci un attimo. Per la lettura immagino che debba essere così: un thread che vuole leggere il valore successivo dovrebbe rimanere "bloccato" nella read sulla coda fino a che tutti gli altri thread non hanno letto il valore precedente.

Dark Phoenix
21-08-2007, 15:06
Si come con la tua soluzione la realizzazione è rapida ma IMHO tende a sacrificare eccessivamente il parallelismo...

Io ho in mente (e anche qualche schizzo su carta) la soluzione più "parallela" ma è la voglia che mi manca :p Sarà L'effetto dell'estate :D