Tomas の BlockingQueueAgent を使用して、F# コンソール プログラムを作成しました。
https://github.com/tpetricek/FSharp.AsyncExtensions/blob/master/src/Agents/BlockingQueueAgent.fs
次のコードがあります。しかし、プログラムは決して終わりません。コンシューマーでループを終了する方法は?
let producer() =
let addLinks = async {
for url in links do
do! ag.AsyncAdd(Some (url))
printfn "Producing %s" url }
async { do! addLinks
do! ag.AsyncAdd(None) }
let consumer() = async {
while true do
let! item = ag.AsyncGet()
match item with
| Some (url) ->
printfn "Consuming %s" url
....
| None ->
printfn "Done" } // How to exit the loop from here?
producer() |> Async.Start
consumer() |> Async.RunSynchronously