Goroutine は single thread 上で実行されるということですが、Multi-threading が利用できない他のプラットフォームと比較すると、並列性サポートが非常に楽になったと言えるのではないでしょうか。
早速 goroutine を試してみます。
以下のコードでは 3 つの goroutine が 1ms ずつ sleep しながら 5 つ数えます。(w を引き回すのは良くないかも?)
実行したときの出力結果は以下のようになりました。
Routine 0: 0 Routine 1: 0 Routine 2: 0 Routine 0: 1 Routine 1: 1 Routine 2: 1 Routine 0: 2 Routine 1: 2 Routine 2: 2 Routine 1: 3 Routine 2: 3 Routine 1: 4 Routine 2: 4 Routine 0: 3 Routine 0: 4 Done.
各 routine が interleave されて実行されている様子がわかります。
App Engine では並列性の弱さが一つの弱点である/あったと思いますが、goroutine が動作することにより楽に並列性を確保することができます。
現在 go runtime は申し込みしないと appspot.com 上で使えません。私も今申し込んでいるところです。上記のサンプルはローカルで動作させていますが、appspot.com 上でも同様に動作すると思います。
はやく experimental を抜けて実用出来るようになってほしいです。
0 件のコメント:
コメントを投稿