AsParallel () - более 2 потоков параллельно в asp.net - PullRequest
10 голосов
/ 21 февраля 2011

У меня есть метод, который я вызываю 8 раз с разными параметрами. Я использую

 AvailableYears.AsParallel()
             .Select<Int32,DateUsedByThread>(x => GetDataForYearWorker(x,CIF))
             .ToList();

GetDataForYearWorker синхронно получает ответ от веб-службы. Он использует очень мало вычислительной мощности в моем приложении asp.net, но обычно это занимает 3-5 секунд для каждого ответа веб-сервиса. Поскольку звонки на веб-сервис не зависят друг от друга, я хочу сделать их все одновременно. Но похоже, что одновременно могут работать только 2 потока. Почему это так и как я могу иметь 8 потоков, работающих одновременно?

1 Ответ

24 голосов
/ 21 февраля 2011

По умолчанию .AsParallel() раскручивает один поток на ядро ​​на машине, на которой выполняется запрос. Если вы хотите изменить это поведение, посмотрите на WithDegreeOfParallelism .

AvailableYears.AsParallel().WithDegreeOfParallelism(5)
             .Select<Int32,DateUsedByThread>(x => GetDataForYearWorker(x,CIF))
             .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...