這可能是F#中最基本的東西之一,但我剛剛意識到我不知道在sceens背後發生了什麼。等待沒有阻塞線程? - 怎麼樣?
let testMe() =
async { printfn "before!"
do! myAsyncFunction() // Waits without blocking thread
printfn "after!" }
testMe |> Async.RunSynchronously
發生了什麼事do! myAsyncFunction()
?我知道它在等待myAsyncFunction
完成,然後再繼續。但是,它怎麼能這樣做,而不會阻塞線程?
我最好的猜測是,do! myAsyncFunction()
後,一切都沿着一個延續,它獲取相同的線程myAsyncFunction()
原定上,一旦myAsyncFunction()
已完成執行上執行過..但話又說回來,這只是一個猜測。
你的猜測是正確的,但我認爲將繼續對從線程池,不一定是相同的線程中的下一個可用的線程中運行。 – Daniel