PLINQ , . - Async I/O.
- .NET: APM, TPL, , # 5 async/, F # async workflows. - .
Async I/O . /, .
: (IIS) - , , .
:
Task.Factory.StartNew( () => Parallel.ForEach<Item>(items, item => DoSomething(item)));
, , / DoSomething.
, DoSomething - , . 3 , 10 30 . .
I/O , , , .
, TPL , :
var tasks = new Task<System.Net.WebResponse>[2];
var urls = new string[] { "https://stackoverflow.com/", "http://google.com/" };
for (int i = 0; i < tasks.Length; i++)
{
var wr = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(urls[i]);
tasks[i] = Task.Factory.FromAsync<System.Net.WebResponse>(
wr.BeginGetResponse,
wr.EndGetResponse,
null);
}
var result = Task.Factory.ContinueWhenAll(
tasks,
results => {
foreach (var result in results)
{
var resp = result.Result.GetResponseStream();
}
});
, 90% - . WebRequest BeginGetResponse, , (TPL, Rx ..).