これはおそらくF#の中で最も基本的なものの1つですが、私は目の前で何が起こっているのか分かりません。スレッドをブロックしないで待機しますか? - どうやって?
let testMe() =
async { printfn "before!"
do! myAsyncFunction() // Waits without blocking thread
printfn "after!" }
testMe |> Async.RunSynchronously
do! myAsyncFunction()
には何が起こりますか?私は移動する前にmyAsyncFunction
が終了するのを待っていることを知っています。しかし、スレッドをブロックすることなく、どうやってそれを行うことができますか?
私の最高の推測では、myAsyncFunction()
の実行が終了した後、同じスレッドmyAsyncFunction()
上で実行されます継続が、上で予定されていたとしてdo! myAsyncFunction()
後のすべてが渡されるということです..しかし、その後、再び、それはただの推測です。
あなたの推測が正しいと、私は継続がスレッドプール、必ずしも同じスレッドから使用可能な次のスレッドで実行されると思いますけれども。 – Daniel