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 :

Pool de Thread


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Isher
    Invité(e)
    Par défaut Pool de Thread
    Bonjour,

    J'aimerais avoir un pool de threads où chaque thread ne pourra pas s'exécuter plus d'un temps donné. Lorsqu'un thread dépasse le temps, il doit être arrêté.

    PoolThread n'offre pas cette possibilité il me semble car les Threads ajoutés ne peuvent plus être arrêtés.

    J'avais pensé dériver la classe Thread et ajouter à cette classe un membre Thread. En gros, un thread surveille l'autre.

    Est-ce une solution raisonnable en terme d'utilisation mémoire et CPU?
    Y aurait-il une autre solution?

    Merci pour vos réponses.

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Par défaut
    Tu peux utiliser la méthode Join() de la classe Thread qui permet de préciser la durée maximale d'exécution d'un thread.

    Comme cette méthode Join() bloque le thread courant, tu peux faire appels à Join() depuis un Thread comme ça ton thread principal n'est pas bloqué.

    En gros ton thread principal déclenche un thread qui lui même pilote la durée de vie de tous les autres threads.

  3. #3
    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
    Join ne sert pas à limiter la vie d'un thread

    il sert à dire au thread qui appelle join d'attendre la fin de l'excution d'un autre thread (ou le temps donné en paramètre) avant de continuer son execution

    par contre .interrupt devrait aller
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Isher
    Invité(e)
    Par défaut
    Bonjour

    Et merci pour vos réponses.

    En fait j'ai ecris mon propre PoolThread comportant une Queue FIFO des threads en attente d'exécution et un tableau des threads ds l'etat "running". Ma classe gère les dépassements de temps ainsi que le lancement d'un nouveau thread lorsqu'un se termine.

    Jai une question sur l'arret du thread qui dépasse son temps imparti. Ces sont des threads qui récupèrent des fichiers sur le net. Je me demandais comment forcer l'arret. par interrupt ou abort. Et cela garantit-il l'arret du thread?

  5. #5
    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
    abort déclenche une exception, une exception spéciale qui se propage de catch en catch jusqu'à atteindre la fin de la sub sur lequel le thread a démarré, arretant ainsi le thread
    c'est moyen dans le sens ou l'exception peut etre lancé alors que c'est du code du framework qui est executé, faisant des comportements étranges parfois

    interrupt lui fait que l'execution du thread s'arrete sans donner de suite à son execution
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Tutoriel sur les pool de threads
    Par ploxien dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 09/08/2007, 13h14
  2. Comment recycler un thread ds un pool de thread
    Par yanis97 dans le forum Langage
    Réponses: 2
    Dernier message: 07/03/2006, 18h21
  3. [Info]Création d'un Pool de thread
    Par yanis97 dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 06/03/2006, 18h23
  4. [Thread]Pool de threads
    Par rlnd23 dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 14/02/2006, 16h01
  5. Réponses: 3
    Dernier message: 22/11/2005, 19h23

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