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 :

Parallélisme implicite des threads ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Par défaut Parallélisme implicite des threads ?
    Bonjour,

    Je suis actuellement en train de développer une application qui va à terme, tourner sur des CPU multicoeurs.

    Je me demandais si la parallélisation se faisait de manière implicite, c'est à dire qu'un thread est associé si possible à un coeur ou bien il faut le déclarer explicitement ?

    Bonne journée

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    par défaut une appli est monothreadée, si tu veux multithreader c'est à toi de coder ca (thread, backgroundworker, parallel.*, tasks, async ...)


    ensuite c'est windows qui gère, un thread n'est pas lié à un coeur, à un instant T il peut y avoir plusieurs centaines de threads qui tournent toute appli confondue
    windows en fait tourner un bout de chaque chacun leur tour et selon leur priorité
    sachant qu'un thread est parfois en pause
    enfin au final si tu as 2 threads dans ton applis qui font quelque chose et qui passent en même temps dans le processeur ils seront forcément sur des coeurs différents
    mais parfois ils passeront chacun leur tour (vu que windows a des centaines de threads à faire passer) et que tu peux avoir plus de threads que de coeurs dans ton appli
    et donc potentiellement sur le même coeur
    mais au final tu auras bien la performance et l'impression du multitâche (enfin selon le nombre de threads et l'occupation du pc)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Citation Envoyé par pitipilot Voir le message
    Je me demandais si la parallélisation se faisait de manière implicite, c'est à dire qu'un thread est associé si possible à un coeur ou bien il faut le déclarer explicitement ?
    Windows se charge de répartir automatiquement les threads du système sur les processeurs et coeurs disponibles. Un thread peut être mise en pause pour en laisser tourner un autre, déplacé vers un autre processeur, etc.

    En général tu n'as pas à t'en préoccuper et forcer l'association d'un thread à un coeur donné est une mauvaise idée. En effet tu ne peux pas présumer de ce que fera le système à ce moment et si d'autres applications ou composants du système auront besoin de puissance CPU.

    Pour les mêmes raisons je te déconseille d'opter pour une distribution rigide et statique du travail sur chaque thread car c'est un coup à se retrouver avec n-1 threads ayant terminé leur travail et le dernier seulement à mi-chemin et faisant attendre tout le monde. Opte pour une distribution dynamique, soit via le ThreadPool (note que les tasks sont par défaut créées sur le threadpool), soit via ton propre système de file d'attente dans laquelle tous les threads viendront piocher.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Par défaut
    Merci pour ces informations, je vais en tenir compte dans la rédaction du code .

    Bonne journée.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/02/2004, 12h50
  2. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03
  3. Variable globale / Propriété des threads
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 03/10/2003, 10h49
  4. [reseaux] Gestion des threads en perl
    Par totox17 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 28/11/2002, 09h40
  5. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53

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