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

Langage Delphi Discussion :

gestion des threads


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 428
    Points : 60
    Points
    60
    Par défaut gestion des threads
    Bonjour;

    Je souhaite avoir un retour d'expériience sur la gestion des threads sous Windows.
    J'ai réalisé une application qui utilise un pool de thread avec un max de 25 threads, mais malgré que je recycle les threads je ne peux dépassé 10 threads qui s'exécutent en //.
    Au delà, les perf sont énormes (l'application ne rend plus la main).

    Q : quels sont causes et les symptomes et comment je dois faire pour arriver au moins à une 20éme de threads.

    Merci,

  2. #2
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    25 threads ?????????????? mais c est énorme !!!

    C'est normal que ton application ne fonctionne pas.
    Il est plutot recommandé de faire au maximum 5 ou 6 threads et encore il faut en avoir l'utilité.

    Elle fait quoi ton application pour utiliser autant de thread ?

  3. #3
    Membre actif
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Points : 245
    Points
    245
    Par défaut
    25 Thread n'est pas une véritable ignominie. Par contre, sur un système monoprocesseur (Hors H.T. et Dual corp ) la commutation des taches peut vite devenir prohibitive fasse au temps de calcul de tes Threads (tu pers plus de temps a passé d'un thread a l'autre qu'à exécuté effectivement tes thread ).
    Pour que tu n'ai pas de pépin, songe a laissé ton processus principal en priorité "normal" et place tes thread enfant un poils en dessous, voir mieux en "idle"

  4. #4
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Un ptit résolu ????

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 428
    Points : 60
    Points
    60
    Par défaut Thread
    Citation Envoyé par rvzip64
    Un ptit résolu ????
    Bonjour;

    Pourquoi 5 ou 6 Threads ?
    Exemple :

    J'ai un thread qui surveille un repertoire et desqu'un fichier est mis il le met ds une file d'attente.
    Un autre thread principal surveille cette file et desqu'un file est inséré, il crée un thread fils qui scane ce fichier et extrait des data pour les insérrer ds une database.
    Le Thread principal gére un pool de thread : au démarrage 5 threads sont crées préalablement, ensuite chaque thread crée fait le même traitement : scanner le fichier, extraitre et stocker ds la base.
    Sachant que je récycle mes threads, une fois qu'elle a fini son traitement, je ne la détruit pas, je la récupére pour faire le traitement.
    Donc j'arrive à 6 threads ds le pool et je suis obligé de bloquer la file d'attente car je ne peux allez au de la => pb de perf.

    Voila.

    A+;

  6. #6
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Comme la dit /dev/null c'est surement un probleme de "context switch"
    Regarde l'article suivant : http://www.matbe.com/articles/lire/6...core/page1.php

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 16
    Points : 19
    Points
    19
    Par défaut
    Je te conseille d'observer l'état du processeur et surtout l'état du noyeau (la ligne rouge sur le graphique).

    Si le processeur pédalle comme un fou et que ton kernel reste bas, le problème viens de la charge de tes threads. Leurs opérations sont trop lourdes pour la machine.

    Si par contre c'est ton kernel qui rame, c'est effectivement un problème d'attribution des threads en fonction de l'affinité de chacun sur un processeur (c'est un bug connue de 2003 serveur par exemple).

    Le scheduler du kernel switch les threads d'un processeur à l'autre et panique completement.

    Pour ce qui est de 25 threads, sur une application serveur acceptant plusieurs connexion, c'est bas (serveur 3-tiers par exemple).

    Essaye aussi de changer le gestionnaire de mémoire (problèmes de contention) en utilisant le fameux fastMM.

Discussions similaires

  1. Gestion des Threads
    Par Nalfouille dans le forum MFC
    Réponses: 3
    Dernier message: 05/04/2006, 16h29
  2. Gestion des threads
    Par yanis97 dans le forum C++
    Réponses: 6
    Dernier message: 08/03/2006, 09h39
  3. GEstion des thread
    Par Julien Dufour dans le forum Access
    Réponses: 8
    Dernier message: 06/10/2004, 14h28
  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

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