Вы определенно можете использовать ThreadPool для своей задачи, но вы должны знать, как ThreadPool
управляет потоками. Если вы попытаетесь запустить 100 потоков следующим образом:
for (int i = 0; i < 100; i++)
{
ThreaPool.QueueUserWorkItem(state => UnitOfWork());
}
тогда нет никакой гарантии, что все 100 потоков будут выполняться в отдельных потоках одновременно. ThreadPool ставит задачи в очередь и выполняет их, используя свободные потоки в ThreadPool, следовательно, он может ставить все ваши задачи в очередь и выполнять их одну за другой. Я не говорю, что так и будет, но гипотетически это может быть.
Но я думаю, тебе не стоит об этом беспокоиться. Попробуйте сначала использовать ThreadPool, установите максимальный предел шага на 100 (или выше) с помощью ThreadPool.SetMaxThreads (100) и очереди запросов, как я писал выше.
И если после этого вы захотите что-то более сложное, вы можете использовать класс Thread . Создайте 100 экземпляров класса Thread
, запустите их все и используйте. Если вы используете класс Thread
, вы можете контролировать время жизни каждого потока, то есть ждать завершения потоков без использования дополнительных приемов.