Forums Casio - Autres questions

Index du Forum | Autres questions | Threads multiples
Louisdb
Hors ligne
Membre
Niveau: Intermédiaire
Points: 3
Défis: 0
Message
Posté le 01/12/2017 20:07

Threads multiples :

Bonjour a tous.
Dans le cadre de la creation d'un chat en c++ sur la SDK je me demande si c'est possible de créer plusieurs threads(par exemple pour un pour attendre les nouveaux messages recus et les afficher).
Merci a tous pour vos réponses.




Lephenixnoir
En ligne
Administrateur
Niveau: Confirmé
Points: 10301
Défis: 130
Message
Citer : Posté le 01/12/2017 20:28 | #
Faire tourner deux fonctions en même temps, ça c'est impossible. Il n'y a qu'un seul coeur dans le SuperH de la calculatrice. En revanche, tu peux toujours implémenter un ordonnanceur tout basique avec un timer. Tu changerais par exemple de fonction 20 fois par seconde pour exécuter progressivement les deux.

Cependant, je suis à peu près certain que tu peux te débrouiller pour faire un chat sans avoir besoin de ce modèle. Si tu pouvais donner quelques précisions sur le mode de communication (port série, port USB, téléportation quantique, magie), on pourrait en décider.
----------------------------------
Watch me, as I build my empire with my own hands.
Louisdb
Hors ligne
Membre
Niveau: Intermédiaire
Points: 3
Défis: 0
Message
Citer : Posté le 06/12/2017 14:28 | #
Je communique via le port série. Le problème est que je voudrais que l'utilisateur puisse recevoir des messages pendant qu'il en écrive un... Sinon je peux juste attendre la fin de son message pour l'envoyer et pour ensuite checker s'il en a recu un mais je ne trouve pas cette solution optimale... Ou sinon checker pendant l'inscription du message?
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9880
Défis: 170
Message
Citer : Posté le 06/12/2017 14:31 | #
C'est parfaitement faisable avec des timers, je dirai même que c'est plus propre de faire avec.

En gros tu lance un timer qui toutes les x millisecondes (x = 200 me parait largement suffisant) regarde si y'a des données dans le buffer du port série. Si c'est le cas, tu les affiches. Et ce truc tourne en même temps que ton interface de saisie des messages
----------------------------------
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Louisdb
Hors ligne
Membre
Niveau: Intermédiaire
Points: 3
Défis: 0
Message
Citer : Posté le 06/12/2017 14:32 | #
Comment sa tourner en même temps?
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9880
Défis: 170
Message
Citer : Posté le 06/12/2017 14:35 | #
En gros le timer interrompt la boucle principale (disons celle dans laquelle tu écris ton message) toutes les 100ms, pour une durée inférieure à la milliseconde. On a donc l'impression que des deux trucs sont exécutés en même temps (récupération des messages et écriture).

Mais nan, on a qu'un seul cœur, donc on peut pas faire tourner les deux fonctions parallèlement. Mais avec les timer justement on se débrouille
----------------------------------
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Louisdb
Hors ligne
Membre
Niveau: Intermédiaire
Points: 3
Défis: 0
Message
Citer : Posté le 06/12/2017 14:36 | #
Ok merci beaucoup je vais me lancer dans un timer dans ce cas!!
Lephenixnoir
En ligne
Administrateur
Niveau: Confirmé
Points: 10301
Défis: 130
Message
Citer : Posté le 06/12/2017 18:35 | #
Voilà, c'est l'idée. Il faut noter que même quand toi tu n'en utilises pas, le système a quand même des timers qui tournent et interrompent « régulièrement » ton programme. C'est parfaitement transparent !

Le meilleur modèle pour cette application (mais il n'est pas possible de l'utiliser dans ton cas), c'est quand le port série lui-même interrompt ton programme quand il reçoit des données. Tu n'as alors pas besoin de timer du tout !
----------------------------------
Watch me, as I build my empire with my own hands.


Index du Forum | Autres questions | Threads multiples
Publicité et partenaires
Casio Education
Casio éducation

TI-Planet
Casiopeia
Casiopeia
CasioFan, la communauté ClassPad
CasioFan
CodeWalrus
CodeWalrus

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2017 | Il y a 64 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Rugby Manager | Jeu de basket | Jeu de handball | Jeu de tennis | Nova Raider | Réparation téléphone | Soccer Rush | Tasty Tale

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd