並列処理の本を読み終わったので、並列処理を作りました
寝る前にのんびり読んでたので、読み終わるのが遅くなりましたが。
「Go言語による並行処理」を読み終わりました。
読み終わった記念に、ストリームっぽい書き方ができる物を作りました。
例えば、こんな感じで、5並列で20個素数を取得する物が書けます。
func main() { const ( jobs = 5 size = 20 ) primes := stream.Connect( context.Background(), stream.InfinityFn(gen), stream.Parallel( jobs, stream.Filter(isPrime), ), stream.Take(size), ) for p := range primes { fmt.Println(p.(int)) } }
エラー処理はサポートしてないんで、panic()
投げるか、stream.Map()
か stream.StopIf()
で頑張ってねというスタンスです。