Re[9]: много Thread или ThreadPool
От: RushDevion Россия  
Дата: 23.02.18 16:45
Оценка: +1
RD>>Например, если данных для обработки пока что нет — наши 50-100 потоков тупо ждут на мониторе.
A>Эм почему? Так если потоки из ThreadPool (Task.Factory.StartNew) не используются большое количество времени, тогда он вроде их освобождает?

Откуда такая информация?

Тред-пул устроен как.
Есть work queue, куда QueueUserWorkItem помещает задачу. Это, кстати, managed штука, т.е. она на стороне CLR живет.
И есть (условно) массив предсозданных потоков. Он уже внутрях виртуальной машины .NET.
Поток берет задачу из очереди и начинает ее выполнять.
Доходит до semaphore.Wait() и встает в состояние WaitSleepJoin.
В этом состоянии он так и будет торчать, пока semaphore не просигналит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.