Task vs AsParallel()

На странице 33 книги Стивена Тоуба

http://www.microsoft.com/download/en/details.aspx?id=19222

Есть код

var pings = from addr in addrs.AsParallel().WithDegreeOfParallelism(16)
   select new Ping().Send(addr);
foreach (var ping in pings)
   Console.WriteLine("{0}: {1}", ping.Status, ping.Address);

и по словам Стивена лучший вариант

var pings = (from addr in addrs
    select new Ping().SendTask(addr, null)).ToArray();
Task.WaitAll(pings);
foreach (Task ping in pings)
    Console.WriteLine("{0}: {1}", ping.Result.Status, ping.Result.Address);

Стивен говорит, что второй вариант лучше, потому что "Абстракция задачи также может быть использована для представления операций, связанных с вводом/выводом и без связывания потока в "

Но разве задача не использует Threadpool (следовательно, все равно использует потоки)? То есть вы фактически связываете поток?

6
задан skaffman 20 January 2012 в 11:44
поделиться