2017-02-18 3 views
1

私は5秒後に出力全体を見るしかありませんが、そうでなければならないと思います。Ocamlスレッドの誤解

私は次の出力を期待

メインはここ
ハイテク
受信(をだけにして5秒スリープ)

が、私のコードは5のために最初に眠っていることによって開始されますその後、それだけが続く。

let t1 ch = 
    let m = sync (receive ch) in 
    print_string (m^" -> received\n"); 
    delay 5.0; 
    sync (send ch "t1 got the message") 

let main() = 
    let ch = new_channel() in 
    create t1 ch; 
    print_string "main is here\n"; 
    sync (send ch "hi"); 
    print_string ("main confirms :"^sync(receive ch)) 

オンラインでチュートリアルを読むのはうれしいですが、私は見つけられませんでした。

答えて

2

出力

print_string "main is here\n"; 
flush stdout 
にフラッシングをお試しください