// Learn more about F# at http://fsharp.net
namespace JQD
type Downloader() =
let ParallelWorker n f =
MailboxProcessor.Start( fun inbox->
let workers =
Array.init n ( fun i ->MailboxProcessor.Start(f))
let rec loop i = async {
let! msg=inbox.Receive()
workers.[i].Post(msg)
return! loop( (i+1)%n)
} loop 0
)
let agent =
ParallelWorker 8,
(fun input ->
let rec loop() = async {
do! Async.Sleep(5000)
return! loop()
}
loop()
)
member this.DowloadAll()=
ParallelWorker 8, (fun data ->
let rec loop() = async {
do! Async.Sleep(5000)
return! loop()
}
loop()
)
Monday, May 31, 2010
F# Parallelism using Agent
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment