2016年2月14日日曜日

F#の非同期ワークフロー

http://fsharp.web.fc2.com/#非同期ワークフロー
を参考にさせていただいた。

 [<EntryPoint>]
let main args =
     let task1 = async { while true do printf "a" }
     let task2 = async { while true do printf "b" }  
     Async.RunSynchronously (Async.Parallel [task2]) ①
     Async.Start  task1 ②
     0
これだと、bしか表示されない。つまり、①が終わらない限り、②は実行されない。

①と②を逆にすると
 [<EntryPoint>]
let main args =
     let task1 = async { while true do printf "a" }
     let task2 = async { while true do printf "b" }  
     Async.Start  task1 ②
     Async.RunSynchronously (Async.Parallel [task2]) ①
     0
これだと、bとaが交互に表示される。つまり、②が終わらなくても、①が実行される。
以前はStartはSpawn、RunSynchronouslyはRunだった?ようです。

0 件のコメント:

コメントを投稿