Active le Nombre de Thread dans le Pool de Thread
Quand j'écris le code ci-dessous, pourquoi suis-je disponible le nombre de Thread comme 1022, 1020.
J'ai que 25 thread max que je suis à l'aide de pool de threads.
Je suppose que la sortie numéro du fil est disponible threads sur le système. J'ai besoin d'obtenir le disponible le nombre de thread dans mon pool de threads, en application win form.
private void Foo()
{
int intAvailableThreads, intAvailableIoAsynThreds;
//ask the number of avaialbe threads on the pool,
//we really only care about the first parameter.
ThreadPool.GetAvailableThreads(out intAvailableThreads,
out intAvailableIoAsynThreds);
//build a message to log
string strMessage =
String.Format(@"Is Thread Pool: {1},
Thread Id: {2} Free Threads {3}",
Thread.CurrentThread.IsThreadPoolThread.ToString(),
Thread.CurrentThread.GetHashCode(),
intAvailableThreads);
//check if the thread is on the thread pool.
Trace.WriteLine(strMessage);
//create a delay...
Thread.Sleep(30000);
return;
}
Merci beaucoup..
(Note : j'ai obtenu le code de http://www.codeproject.com/KB/cs/AsyncMethodInvocation.aspx)
Bel article!!
- Pas de doute que l'article est excellent, mais il est écrit en 2006 !
Vous devez vous connecter pour publier un commentaire.
Le nombre maximal de threads dans le fil de la piscine par cœur a beaucoup changé au fil du temps. Il n'est plus 25 par cœur, ce qui je pense est ce que vous attendiez.
Par exemple, l'exécution de ce sur mon quad-core hyperthread ordinateur portable avec .NET 4, j'obtiens un maximum de 32767 threads de travail et 1000 IO port de terminaison des threads:
Sous .NET 3.5-je obtenir 2000 threads de travail et encore 1000 IO port de terminaison des threads.
Qui n'est pas le nombre de threads en fait dans le pool de threads que - c'est le nombre maximum que le pool de threads permet de se créer au fil du temps.
Utilisation
pool de threads.GetMaxThreads
pour obtenir ce que vous voulez.Cet article permet d'expliquer tout ce que vous devez savoir à propos de
ThreadPool
.J'ai mis les deux à 10001, à l'aide de pool de threads.SetMaxThread. Après que chaque fois que je exécuter votre programme, il montre max de thread 10001, son persisté. Je n'ai pas redémarré mon core i 5 système.
Après que j'ai mis les deux à 10000000 , et c'est en montrant fil de discussion suivant max comte
travailleur:32767 ioCompletion:32767
Donc sur mon Windows 7, Intel Core i5 , c'est la capacité maximale.