lecture de buffer qui bloque

lecture de buffer qui bloque - Java - Programmation

Marsh Posté le 04-10-2005 à 15:07:38    

Bonjour :hello:  
 
J'utilise un buffer pour lire les données sur une COM RS; mais j'ai un probleme lier à l'apareil distant, mais que j'aimerai regler avec java.
Mon apareil distant fait croire qu'il est prés à envoyer une donné, mais reste muet, ce qui bloque le programme.  
 

Code :
  1. if (bufRead.ready()){
  2. System.out.println("lecture buffer" );
  3. motRecu = bufRead.readLine().trim();
  4. System.out.println("lecture ok" );


 
Mon programme reste bloqué sur readLine sans que l'on ne puisse rien faire.  
 
La solution a laquelle j'ai pensé, serai d'exécuter readLine pendant un temps determiné, mais je ne sais pas trop comment.
 
Merci

Reply

Marsh Posté le 04-10-2005 à 15:07:38   

Reply

Marsh Posté le 06-10-2005 à 12:56:08    

pas d'idée?

Reply

Marsh Posté le 06-10-2005 à 13:05:52    

Regarde du côté des IO non bloquant(e)s (package nio).
 
Et soigne ton orthographe, stp, c'est pas facile à lire ! :o


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 06-10-2005 à 13:45:33    

en plus ou à la place de ce que dit Sircam, suivant ton architecture, tu peux faire la lecture dans un thread séparé.
 
et si c'est une interface homme-machine ->swingworker


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 06-10-2005 à 14:17:04    

nraynaud a écrit :

en plus ou à la place de ce que dit Sircam, suivant ton architecture, tu peux faire la lecture dans un thread séparé.


Mais ça ne résoud jamais le pb. Pas moyen de dire au thread de se terminer... ni de le terminer. Ce dernier reste bêtement bloqué. C'est frustrant.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 06-10-2005 à 15:14:40    

Et meme si un thread c'est pas ce qu'il y a de plus lourd, c'est pas top d'en semer a gauche et a droite :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 06-10-2005 à 15:21:03    

esox_ch a écrit :

Et meme si un thread c'est pas ce qu'il y a de plus lourd, c'est pas top d'en semer a gauche et a droite :o


Mais non, un petit thread, ça mange pas de pain.   [:pingouino]  
 
Enfin, pas d'abus.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 06-10-2005 à 15:22:18    

Oui mais ça commance toujours avec un pti dans les coins, et apres on s'y retrouve plus :D . D'ailleurs s'il y a une maniere élégante de resoudre le probleme... pourquoi taper dans le gros bourrin pas propre [:pingouino]


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 06-10-2005 à 15:26:16    

Elégante ? Sans nio ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 06-10-2005 à 15:27:53    

nraynaud a écrit :

en plus ou à la place de ce que dit Sircam, suivant ton architecture, tu peux faire la lecture dans un thread séparé.
 
et si c'est une interface homme-machine ->swingworker


 

esox_ch a écrit :

Et meme si un thread c'est pas ce qu'il y a de plus lourd, c'est pas top d'en semer a gauche et a droite :o


 
[:pingouino] les IO non bloquantes ne résolvent pas tout.  
 

esox_ch a écrit :

Oui mais ça commance toujours avec un pti dans les coins, et apres on s'y retrouve plus :D . D'ailleurs s'il y a une maniere élégante de resoudre le probleme... pourquoi taper dans le gros bourrin pas propre [:pingouino]


 
tu sais lire ? J'ai pas dit d'en mettre des centaines.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 06-10-2005 à 15:27:53   

Reply

Marsh Posté le 06-10-2005 à 15:36:57    

Non ça je l'ai compris nraynaud :D
 
Mais je me suis souvent fait prendre en me disant "Bon ce truc m'emmerde,  je l'emferme dans son thread pour qu'il me foutte la paix" et le resultat est pas toujours super ... Donc si on en creer juste 1 comme tu l'as dit, pas de probleme, mais faut faire gaffe a pas considerer ça comme la reponse bouche-trou a tous les problemes :jap:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 06-10-2005 à 15:39:21    

esox_ch a écrit :

"Bon ce truc m'emmerde,  je l'emferme dans son thread pour qu'il me foutte la paix"


Sans doute un bon moyen de se prendre un coup de pelle à clous (tm).   [:pingouino]  


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 06-10-2005 à 15:40:54    

Tout a fait :jap: Et apres m'en etre pris plusieurs coups bien visés j'ai appris a ne pas considerer les threads comme des bouées de sauvetage :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 06-10-2005 à 15:44:22    

esox_ch a écrit :

Tout a fait :jap: Et apres m'en etre pris plusieurs coups bien visés j'ai appris a ne pas considerer les threads comme des bouées de sauvetage :D


c'est pas une boué de sauvetage, mais si je vois des IO (bloquantes ou non) dans le thread de swing, je mets des coups de pelle, que ce soit clair.
 
Sauver un fichier, lire une socket etc. ça se fait hors du thread de refraîchissement de l'interface.
 
Maitenant, la bonne idée ça peut être d'avoir une seule thread "IOworker" qui fait tout, ou, si le besoin est minime d'utiliser un swingworker adhoc pour sauver un fichier.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 07-10-2005 à 15:15:13    

Merci pour toute ces reponse, mais l'envoie et la reception sur le buffer ce font deja dans un thread à part.  
J'ai pas encore eu le temps de regarder l'api nio, je vais voir si une solution ne se trouve pas par la.
 
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed