certi-devel-french
[Top][All Lists]
Advanced

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

Re: RE : Re: RE : Re: Erreur avec sendInteraction()


From: Ludovic BORG
Subject: Re: RE : Re: RE : Re: Erreur avec sendInteraction()
Date: Wed, 13 Jun 2007 22:17:42 +0200 (CEST)

Bonjour,
j'ai vu sur le net des implémentations de l'ex fonction C sous turbo-c dos : 
getch / getche / kbhit

rends toi à cette adresse : http://www.cppfrance.com/code.aspx?ID=10611
il y a une implémentation en C++ avec une classe , une en C et l'article 
original ( recherche le mot clé "wrox" dans la page ) -- passe les discours et 
réponse pour savoir qui à pompé sur quoi ;-)

En espérant que cela t'aidera
Ludovic.



> Message du 12/06/07 16:57
> De : "Eric Noulard" <address@hidden>
> A : "CERTI development discussions in French" <address@hidden>
> Copie à : 
> Objet : Re: RE : Re: RE : Re: Erreur avec sendInteraction()
> 
> Le 12/06/07, HADJ AMOR HASSEN<address@hidden> a écrit :
> 
> > J'ai essayé d'insérer des tick dans mon code mais le problème persiste
> > encore. J'avais des doutes que le problème vient de la boucle de simulation
> > qui contient la fonction getline(). Voici le code de la boucle de simulation
> > dans le fichier main.cc:
> >
> > -------------------------------------------------------------------------------------------------------------------------
> >
> > //simulation loop
> >     while (true) {
> >     char text[256];
> >         chatting.ticktest();
> >     cin.getline(text, sizeof(text));
> >
> >     if (!strcmp(text, "."))
> >     {
> >     break;
> >
> >     }
> >     chatting.sendMessage(text);
> >     chatting.ticktest();
> >
> >     }
> 
> la fonction getline est bloquante:
> 
> >>>>> http://www.cplusplus.com/reference/iostream/istream/getline.html
> istream& getline (char* s, streamsize n, char delim );
> 
> delim
>     The delimiting character. The operation of extracting succesive
> characters is stopped when this character is read. This parameter is
> optional, if not specified the function considers '\n' (a newline
> character) to be the delimiting character.
> >>>>>
> 
> >
> > J'ai essayé d'envoyer des valeurs qui s'auto-incrémentent d'un fédéré à un
> > autre. J'ai réussi, la réception des interactions est instantané.
> 
> Ceci confirme l'hypothèse ci-dessous:
> 
> >
> >  Du coup, je pense que le problème est dû à l'utilisation de la fonction
> > getline().. qui apparemment s'exécute jusqu'à détection du retour chariot
> > "/n" et empêche ensuite l'affichage du message envoyé par l'un des fédérés
> > par interaction.
> 
> Exact. Pour ce genre d'application "interactive" on ne peut
> pas faire de lectures (ou d'écritures) le cas échéant qui soient bloquantes
> car on bloque "le reste de l'activité".
> 
> A partir de là 2 famille de solutions:
> 
> A) utiliser des fonctions de lecture/écriture non bloquantes
>     par exemple istream::readsome
>     ou bien utiliser les fonctions C plutôt que C++ et
>     utiliser l'appel système select(2) pour vérifier si il y a qqchose à lire
> 
> B) créer des threads (ou processus) indépendants qui
>     s'occuperont de gérer ces entrées/sorties bloquantes sans
>     géner l'activité principale.
> 
> > Je pense que la réception de l'interaction est instantanée mais l'affichage
> > du ou des message(s) reçu(s) n'est pas instantané. En fait, il faut que je
> > tape un message à envoyer et je tape entrée pourque je puisse recevoir  le
> > ou les messages tapées dans l'autre fédéré.
> >
> > Est ce que vous avez une idée pour remedier à ce petit problème?
> 
> Voir les suggestions ci-dessus.
> 
> -- 
> Erk
> 
> 
> --
> CERTI-Devel-French mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/certi-devel-french
> 
>





reply via email to

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