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 :

Multithread et Duo Core


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 232
    Points : 94
    Points
    94
    Par défaut Multithread et Duo Core
    salut
    je risque de dire une connerie mais est il conseillé d'utiliser les Threads dans un programme pour bénéficier d'un architecture Duo Core...

    ou alors j'ai vraiment rien compris

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Bonjour,

    A mon avis, tous les threads d'un programme sont exécutés sur le même core.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 232
    Points : 94
    Points
    94
    Par défaut
    je ne sais pas trop mais il y a bien 3 étapes ?:
    1. programme --system exploitation
    2. system-groupe processeurs
    3. groupe processeurs--coeur1 ou coeur2 ou les deux


    non?

  4. #4
    Membre expérimenté Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonjour,

    En fait un programme multi-threadé se lancera sur plusieurs coeurs uniquement si l'OS est compatible et est capable de dispatcher sur les différents coeurs du processeur.
    Ingénieur Multimédia - TMM Communication

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Bonjour,

    Aujourd'hui, au sens Thread programmation, tous les programmes sont multithread (comment un navigateur par exemple, pourrait gérer sans threads les interactions avec l'utilisateur et en même temps le rendu d'une ou plusieurs GIF animée). Pourtant, si tu écris un script qui fait une opération très lourde sous un navigateur, le processus ne va utiliser que 50% du Core 2 Duo ne bloquant qu'un seul core et par là-même tous les autres process qui tournent sur ce core.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Bonjour,

    Bon, le plus simple pour s'en rendre compte, c'est d'effectuer des tests. Donc j'ai écris un petit programme tout simple qui fait une opération lourde avec 1 thread : utilisation au maximum de 50% du CPU (donc de 1 core) ; avec 2 thread : utilisation au maximum de 100% du CPU (donc de 2 core). Il faut croire que .NET est donc capable de dispatcher les threads d'un même programme sur plusieurs core.

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 232
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Kaidan Voir le message
    Bonjour,

    Bon, le plus simple pour s'en rendre compte, c'est d'effectuer des tests. Donc j'ai écris un petit programme tout simple qui fait une opération lourde avec 1 thread : utilisation au maximum de 50% du CPU (donc de 1 core) ; avec 2 thread : utilisation au maximum de 100% du CPU (donc de 2 core). Il faut croire que .NET est donc capable de dispatcher les threads d'un même programme sur plusieurs core.
    sa c'est du concret ..merci

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    Ce n'est pas particulièrement .NET qui fait le dispatch, mais l'OS.
    La runtime CLR ne réinvente pas la roue et n'a pas son propre Ordonnanceur intégré... qui fait mieux que l'OS. Il utilise l'ordonnanceur système.

    Si ta version de windows gere parfaitement les multicore alors ton prog multithread utilisera correctement les multicores.

    Pour la remarques commes les navigateurs, en réalité, c'est très différent. Rien ne permet d'affirmer quils sont multithreadés dans la mesure où certaines opérations longues et fastidieuses bloquent le navigateur en entier... aussi bien l'ui du navigateur que le rendu de la page. Générallement c'est le cas d'une appli winform pseudo multithreadé mal codée.
    Une architecture multithread peut également etre confinée à un seul des cores disponibles. Tout dépend de la façon dont est programmé l'application.

    A titre indicatif, les navigateurs on souvent tendance à utiliser des horreurs du genre, j'ai un thread de fenetrage, et à chaque fois que celuici lance un évenement j'exécute le code a l'intérieur.... c'est avec ce type de programmation que le navigateur ne dépasse pas 50% du temps CPU. En effet, c'est le thread de fenetrag qui exécute tout, l'event n'est pas dispatché dans un thread séparé !
    Nombre d'applications male conçues font également de la sorte.

    En réalité cela vient beaucoup des croyances des développeurs qui croient que les délégates sont exécuté dans des threads séparés ne pensant pas du tout qu'ils sont exécuté dans le thread appelant, qui dans le cas d'un winform est le thread qui gere le controle fenetré.

Discussions similaires

  1. multithreading core 2 duo
    Par oswalidos dans le forum Linux
    Réponses: 1
    Dernier message: 02/02/2009, 12h24
  2. Temps d'exécution Duo Core et Simple Core
    Par tomy29 dans le forum Langage
    Réponses: 8
    Dernier message: 17/11/2008, 16h00
  3. Différence cpu : core duo, core 2 duo
    Par soussie dans le forum Composants
    Réponses: 2
    Dernier message: 11/09/2008, 20h56
  4. INTEL CORE DUO ou CORE 2 DUO
    Par JeanMi66 dans le forum Composants
    Réponses: 4
    Dernier message: 24/10/2006, 18h25
  5. Quel CM/RAM pour mon core 2 duo
    Par neo.51 dans le forum Composants
    Réponses: 4
    Dernier message: 18/08/2006, 11h38

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