Wednesday, June 8, 2011

F# Async Workflow


#light
open System.IO
open System.Net
open System

let AyncHttp(url:string) =
async {
let req=WebRequest.Create(url)
let! rsp=req.AsyncGetResponse()
use s= rsp.GetResponseStream()
use r= new System.IO.StreamReader(s)
r.ReadToEnd()
}

//let SyncHttp(url:string) =
// let req=WebRequest.Create(url)
// let rsp=req.GetResponse()
// use s= rsp.GetResponseStream()
// use r= new System.IO.StreamReader(s)
// r.ReadToEnd()



let dt=System.DateTime.Now

//SyncHttp "http://maps.google.com"
//SyncHttp "http://maps.live.com"
//SyncHttp("http://www.nhl.com");
//SyncHttp("http://www.nfl.com");
//SyncHttp("http://www.china.com");
//SyncHttp("http://www.sina.com");
//SyncHttp("http://www.nba.com");
//printf "%A" (DateTime.Now-dt).Milliseconds

Async.Parallel [
AyncHttp("http://maps.google.com");
AyncHttp("http://maps.live.com");
AyncHttp("http://www.nhl.com");
AyncHttp("http://www.nfl.com");
AyncHttp("http://www.china.com");
AyncHttp("http://www.sina.com");
AyncHttp("http://www.nba.com");
]
|> Async.RunSynchronously

printf "%A" (DateTime.Now-dt).Milliseconds

No comments: