26. チャネルによるディスパッチ
func (w *worker) start() {
go func() {
for {
// register the current worker into the dispatch pool
w.dispatcher.pool <- w
select {
case v := <-w.data:
if bulkstr, ok := v.([][]string); ok {
wordMap := processData(bulkstr)
w.dispatcher.sink <- wordMap
}
w.dispatcher.wg.Done()
case <-w.quit:
return
}
}
}()
}
49. Elixir Go C# Scala Node.js
パフォーマンス B+ 〜A A A A D
ポーテーション 〇 〇 ? 〇 〇
安定度 S B A A A
環境構築コスト A S B C A
学習コスト B+ A B+ B- A
記述量 S C A S A
メンテナンス性 A B A A A
ドキュメント B+ A A S A
Elixirの安定度がSなのはGCの仕組による(プロセ
ス単位)