Я начинаю темы точно, как говорится в книге:Почему ThreadPool запускает только один поток во времени?
for (int i = 1; i <= 4; i++) {
ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadMethod), i);
}
ThreadMethod выглядит следующим образом:
static void ThreadMethod(object input) {
Console.WriteLine(input + " thread started");
//do some stuff for, like, 400 milliseconds
Console.WriteLine(input + " thread completed");
}
В какой-то причине 2 нити начинается только после того, как 1 завершена (в этот момент вся работа уже сделана и 2 -4 нить только начинается и перестает ничего делать).
Что может быть неправильным? Спросите все, что может помочь решить эту проблему. Я не использую никаких классов синхронизации.
Если это имеет значение, у меня есть 2 основных процессора.
Вы пытаетесь сделать потоки более длительным периодом времени (поместите пример Thread.Sleep() для примера), чтобы устранить проблему. –
Прослушать исполняемый код, чтобы мы могли видеть, что вы имеете в виду и воспроизводите. – usr
Пул потоков работает так же, как ваш мозг. Когда ваш босс одновременно дает вам 4 новых задания, вы также не работаете со всеми 4 одновременно. Вы закончите один, прежде чем переходить на другой. Если это займет слишком много времени, чтобы завершить его, вы можете быть вынуждены начать еще одно раньше, чтобы оно не задерживалось слишком долго. –