Sommaire

La notion de « Pool de threads »

Lorsqu’un programme utilise des threads, il est très consommateur en ressources. En effet, chaque nouveau thread possède son cycle de vie : il démarre, effectue sa tâche et meurt. L’idée du « pool de threads » est d’avoir un ensemble de threads relatifs à notre programme qui indifféremment exécuteront différentes tâches. On ne recrée pas sans cesse des threads : on recycle alors des threads qui ont fini leurs tâches et qui peuvent faire quelque chose d’autre. .NET offre une classe pour gérer spécifiquement un pool de threads : la classe ThreadPool.

Les méthodes « clés » pour la gestion en pool de threads sont les deux méthodes QueueUserWorkItem :

        public static bool QueueUserWorkItem(WaitCallback callBack);  
        [SecuritySafeCritical]  
        public static bool QueueUserWorkItem(WaitCallback 
callBack, object state);

Elles permettent de mettre en file d’attente une méthode pour exécution. Cette méthode verra un thread dédié être créé, mais cette dernière opération est transparente pour le développeur. Par exemple :

using System;  
using System.Threading;  
  
namespace TestThread  
{  
    class Program  
     ...