J'ai le code ci-dessous, où je Spawn plusieurs fils, normalement environ 7, et les rejoindre à attendre jusqu'à ce que tous sont effectuées:C# Threading - fils multiples a donné naissance, seulement 1 ou 2 sont l'exécution d'autres qui attendent
List<Thread> threads = new List<Thread>();
Thread thread;
foreach (int size in _parameterCombinations.Keys)
{
thread = new Thread(new ParameterizedThreadStart(CalculateResults));
thread.Start(size);
threads.Add(thread);
}
// wait for all threads to finish
for (int index = 0; index < threads.Count; index++)
{
threads[index].Join();
}
Lorsque je vérifie la plupart du temps seulement un ou deux threads s'exécutent en même temps, seulement une ou deux fois quand je relance l'application tous exécutés.
Existe-t-il un moyen de forcer l'exécution de tous les threads?
Merci beaucoup.
Puisque nous ne savons pas la définition de CalculateResults difficile de dire si cette méthode bloque à un moment donné, mais qui expliquerait le comportement observé. –
combien de cœurs y a-t-il sur votre machine? seul un nombre de threads peut réellement fonctionner en parallèle. – luke
Combien de temps dure la tâche de calcul? – Adibe7