Разница между элементами ThreadPool? - PullRequest
2 голосов
/ 07 апреля 2011

Они имеют одинаковое значение?

И как мне использовать ThreadPool.SetMaxThreads(20, 20);, потому что я не вижу 20 потоков, работающих асинхронно?

ThreadPool.SetMaxThreads(20, 20);
    ThreadPool.QueueUserWorkItem(new WaitCallback(WorkThread), DateTime.Now);

и

for (int i = 0; i < 20; i++)
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(WorkThread), DateTime.Now);
        }

Ответы [ 2 ]

4 голосов
/ 07 апреля 2011

Сколько потоков использует пул, в значительной степени зависит от него и может варьироваться в зависимости от того, что происходит else , количества незапущенных элементов и т. Д .;Вы только устанавливаете max .Вы не единственный пользователь пула;.net использует это сам, так что не связывайтесь с ним.Если вы явно хотите 20 потоков, создайте 20 Thread s.

1 голос
/ 07 апреля 2011

ThreadPool реализован по-другому в .NET 4 (в отличие от .NET).

Когда вы устанавливаете Max ThreadPool, вы говорите, сколько вы хотите, чтобы threadPool создал , если требуется . Если задача, поставленная в очередь, быстрая, она может обработать ее даже с несколькими из них, не создавая 20 потоков.

Вы можете установить SetMinThreads, который будет гарантировать, что он сначала создает минимальное количество потоков. Но будьте осторожны с этим, поскольку создание потоков - это попадание ресурсов

см. Статью MSDN

...