Trên trang 33 của cuốn sách Stephen Toub củacông tác vs AsParallel()
http://www.microsoft.com/download/en/details.aspx?id=19222
Có mã
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);
và theo Stephen phiên bản tốt hơn
var pings = (from addr in addrs
select new Ping().SendTask(addr, null)).ToArray();
Task.WaitAll(pings);
foreach (Task<PingReply> ping in pings)
Console.WriteLine("{0}: {1}", ping.Result.Status, ping.Result.Address);
Stephen nói tùy chọn thứ 2 là tốt hơn bởi vì "Tóm tắt tác vụ cũng có thể được sử dụng để biểu diễn I/O-ràng buộc hoạt động và không có buộc lên một sợi trong quá trình . "
Nhưng không phải một tác vụ chỉ sử dụng Threadpool (do đó chỉ sử dụng luồng anyway) bên dưới? Vì vậy, bạn đang trong thực tế buộc lên một sợi?
"không phải Tác vụ chỉ sử dụng Threadpool" - điều đó sẽ không có nhiều trừu tượng. –