tsp-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE : [Tsp-devel] tsp.core.common.TspStreamReader en JAVA


From: Eric.NOULARD
Subject: RE : [Tsp-devel] tsp.core.common.TspStreamReader en JAVA
Date: Fri, 29 Apr 2005 17:43:12 +0200


Le thread 'stream reader' s'occupe de la partie réseau
et donc mets en FIFO les données.

L'intérêt d'avoir une FIFO est de ne pas bloquer une
application (par exemple) IHM dans un appel bloquant
du genre read sur une socket (ou que l'appli finale
ait à gérer les lecture incomplètes non bloquantes).

D'après ce dont je me souviens il n'y a pas de 2ième thread.
Il y a un unique thread dont l'objet et de mettre en FIFO
ce qu'il lit sur la socket.

Ensuite l'objet session donne accès à sa FIFO de façon
à ce que l'application finale puisse dépiler "à son rythme"
la FIFO.

L'application finale est par exemple une IHM qui vient
"poller" la FIFO quand elle le souhaite pour vérifier
si de nouveau sample sont arrivés.

En dimensionnant correctement la FIFO et en jouant sur
la priorité des threads je pense (mais je peux me tromper)
qu'on peut mieux maitriser les flux entre l'application
'finale' et le flux réseau.

On peut par exemple tailler la FIFO pour qu'elle tienne
'10 secondes' et poller à 5/8 secondes.

L'autre intérêt de la FIFO est qu'il est possible que l'application
finale attende un jeu de sample "complet" disons les 50 symboles
échantillonnés, le thread stream reader lira la socket "dès qu'il
y a qqchose à lire".

L'application elle peut donc faire

if (maFIFO.nbSample() == nombre_attendus) {
   process()
}
else {
   wait_moresample()
}

Si il y a réellement 2 threads et que donc j'ai raté qqchose
(ce qui est largement possible) pouvez-vous me dire dans quel(s)
fichiers source (ainsi que la ligne) ils sont crées?

Eric

-------- Message d'origine--------
De:     address@hidden de la part de CHOQUET, Mathias
Date:   ven. 29/04/2005 16:51
À:      'address@hidden'
Cc:    
Objet:  [Tsp-devel] tsp.core.common.TspStreamReader en JAVA
Re bonjours,
Je ne comprend pas certains des choix d'implémentations dans
tsp.core.common.TspStreamReader et dans  tsp.core.TspSession en java.

Dans TspStreamReader il y a :
        _Un thread (1) qui lit le flow de données provenant du provider et
qui rempli une FIFO.

Dans TspSession il y a :
        _Un thread (2) qui dépile la FIFO.


Je ne comprend pas pourquoi il y a deux thread et une FIFO.
Je pense qu' un seul thread (lisant le flow de données) suffit. Le
TspStreamReader peut envoyer l'information directement sans passer par une
FIFO.
Pouvez m'expliquer l'interet de cette architecture ?

Merci d'avance, cordialement.
Mathias Choquet.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]