IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Avoir plusieurs lectures


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Par défaut Avoir plusieurs lectures
    Salut tout le monde
    Voilà j'aurai juste aimer savoir s'il étais possible de faire "plusieurs lectures", dans un seul même programme.
    Enfait c'est peut être pas trop clair ^^, ce que je veux dire par "plusieurs lectures" et enfait que le programme lise dans 2 boucles par exemple en même temps.
    Cela ne me semble pas possible enfait xD mais je me demande surtout comment certains programmes (des jeux en particuliers), où on voit tout bouger en même temps, s'y prennent car tout le jeux ne peut pas être consentrer en une seule et même boucle .

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    C'est ce qu'on appelle un environnement multi-thread. C'est à dire que les tâches s'éxécutent presque en même temps (où en même temps sur un processeur multi-coeur).
    Au lieu de faire une tâche A, puis une tâche B, le programme va faire une partie de A, puis une partie de B. Puis il continue A, et reviens sur B. A..B..A..B

    C'est un peu simpliste, mais pas trop loin de la réalité !

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Ben, à vrai dire la majeure partie des jeux sont concentrés en un seule et même boucle
    La différence c'est qu'un processus ou thread s'exécutant en tache de fond réceptionne tous les appuis sur une touche et les met en attente (conceptuellement dans une queue). Ensuite, quand le jeu a le temps de les traiter (entre deux images) il gère les entrées l'une après l'autre. Comme les images défilent très vite ça donne l'illusion qu'il sait faire plusieurs choses en même temps.
    En fait les jeux délèguent la gestion des évènements à une bibliothèque annexe, qui va probablement demander au système de les gérer. Cela fait donc effectivement intervenir un chouia de multithread/processus mais le jeu lui même ne s'en préoccupe pas plus qu'une bête applic console avec un scanf() dedans.
    Par contre la où c'est absolument nécessaire c'est dans la musique: il serait beaucoup trop compliqué de jouer un son et de faire autre chose "en même temps" sans utiliser de multithread.

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par zais_ethael Voir le message
    Ben, à vrai dire la majeure partie des jeux sont concentrés en un seule et même boucle
    Cette phrase était sans doute vraie il y a 10 ans. Aujourd'hui, je ne sais plus trop. Déjà parce que la complexité des jeux évolue, et pas uniquement dans le domaine de l'affichage (IA, gestion du réseau...), et ces autres domaines ont des contraintes temps réel différentes de celles de l'affichage (un IA à 10Hz avec un affichage à 60Hz ne me semble pas choquant), ensuite (et surtout ?) parce que les machines multi-coeurs commencent à être vraiment courantes, et je vois mal un développeur de jeux apercevoir un processeur qui ne fait rien sans sauter dessus avidement avec la bave aux lèvres
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Par défaut
    Merci beaucoup pour vos réponses =D
    J'ai survolé les cours sur ce système de serveur multithreads et ça n'a pas l'air d'être très facile xD Mais je pense que je veux essayer de m'y mettre ^^

    Merci encore

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Cette phrase était sans doute vraie il y a 10 ans. Aujourd'hui, je ne sais plus trop. Déjà parce que la complexité des jeux évolue, et pas uniquement dans le domaine de l'affichage (IA, gestion du réseau...), et ces autres domaines ont des contraintes temps réel différentes de celles de l'affichage (un IA à 10Hz avec un affichage à 60Hz ne me semble pas choquant), ensuite (et surtout ?) parce que les machines multi-coeurs commencent à être vraiment courantes, et je vois mal un développeur de jeux apercevoir un processeur qui ne fait rien sans sauter dessus avidement avec la bave aux lèvres
    Ben justement, le multi-coueur pose un sacré problème aux concepteurs de jeux. Le barème de base est interception des entrées -> mise à jour des données -> affichage, il n'y a pas vraiment de place pour du multithread la dedans. Je suppose qu'au niveau de la mise à jour des données on en incorpore de plus en plus dans certains sous-algorithmes (je pense principalement à l'IA), mais pour le reste... Au niveau affichage, la jeux en lui même se contente d'envoyer des données au moteur d'affichage, la non plus il n'y a pas vraiment de possibilité. Reste donc le moteur 3D, mais comme je n'y connais pratiquement rien faudrait demander à un responsable de la rubrique jeux.

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Citation Envoyé par zais_ethael Voir le message
    faudrait demander à un responsable de la rubrique jeux.
    http://pkisensee.spaces.live.com/Blo...2EB7!243.entry (Le site a l'air HS pour l'instant ; il y a une présentation associée)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 40
    Par défaut
    Le multi-thread est réaliser automatiquement par le processeur, ou c'est le programmeur qui dois, dans sont programme "mettre" quelque chose pour que ça se réalise ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Cette phrase était sans doute vraie il y a 10 ans. Aujourd'hui, je ne sais plus trop. Déjà parce que la complexité des jeux évolue, et pas uniquement dans le domaine de l'affichage (IA, gestion du réseau...), et ces autres domaines ont des contraintes temps réel différentes de celles de l'affichage (un IA à 10Hz avec un affichage à 60Hz ne me semble pas choquant), ensuite (et surtout ?) parce que les machines multi-coeurs commencent à être vraiment courantes, et je vois mal un développeur de jeux apercevoir un processeur qui ne fait rien sans sauter dessus avidement avec la bave aux lèvres
    Et Sony aime les gens qui bavent! La PS3 est dotée d'une architecture Cell qui fournit 7+1 (chiffre exact à vérifier) processeurs fonctionnant en parallèle, chacun pour une tâche spécifique (audio, intéractions physiques, images, IA, etc). Question multi-coeur, je pense qu'on est bon!

    Article Wikipedia sur le processeur Cell

    Carl

  10. #10
    Invité
    Invité(e)
    Par défaut
    Alone,

    Pour répondre à ta question, les coeurs fonctionnent joyeusement sans se soucier du développeur. Ce dernier doit effectivement exploiter cette possibilité, et dès lors il doit faire attention: lorsque dans ton programme, les instructions ne s'exécutent plus forcément dans l'ordre où elles sont écrites (on pourrait argumenter que c'est déjà le cas avec le réordonnancement matériel des instructions, mais là on pousse le détail), tu perds tellement de garanties que le jeu devient beaucoup plus difficile.

    Prends un exemple: tu as un tronçon de chemin de fer, et 150 trains. S'il était impossible aux trains de vouloir circuler en même temps sur le tronçon, tout serait simple. Mais c'est possible! Et à ton avis, combien le millions la SNCF a-t-elle dépensés pour faire en sorte que cela n'arrive pas?

    En programmation, c'est pareil: ce qui pourrait être simple en mono-thread peut devenir un vrai casse-tête en multi-thread.

    alCr

  11. #11
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Après, il peut y avoir des bibliothèques comme OpenMP, qui permettent de faciliter la gestion de programmes multi-thread. Toutefois, OpenMP convient plus à des traitements parallèles qu'à des attentes multiples...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Citation Envoyé par 5hdumatin Voir le message
    alCr
    Tu a lancé un thread pour écrire chaque lettre c'est ça ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Eclipse 3]Avoir plusieurs consoles
    Par cooper_sunz dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 13/10/2006, 20h57
  2. Réponses: 2
    Dernier message: 27/06/2006, 08h34
  3. [Prototype] Avoir plusieurs instances
    Par pedouille dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 17/12/2005, 09h12
  4. Réponses: 9
    Dernier message: 29/09/2005, 09h38
  5. Réponses: 13
    Dernier message: 25/01/2005, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo