Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Threads multiples


louisdb Invité

Threads multiples

Posté le 01/12/2017 20:07

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 Points: 22762 Défis: 149 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.
Louisdb Hors ligne Membre 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 En ligne Labélisateur Points: 11571 Défis: 176 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
Louisdb Hors ligne Membre Points: 3 Défis: 0 Message

Citer : Posté le 06/12/2017 14:32 | #


Comment sa tourner en même temps?
Dark storm En ligne Labélisateur Points: 11571 Défis: 176 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
Louisdb Hors ligne Membre 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 Points: 22762 Défis: 149 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 !

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 92 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd