uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

お前は、今までつかったThreadクラスとsynchronizedブロックの数を覚えているのか?

JSR-166y(並列化ユーティリティ)というのがあって、「Parallel Arrays」(並列配列)というコンカレント処理を記述する方法が検討されております。

一瞬想像する、「ベクトル化計算」とは異なって、数値計算に限らないので、MapReduceの方が近いのかな。

これは、扱うのも書くのも理解するのも難しいスレッドを使わずに、平行・並列処理をキレイに書き下そうという試み。でも内部的にはスレッドが動いているのだろうから、「スレッドを隠そうとする試み」か。だとすると、並列処理が本質的に持つ非決定性から逃れられるのではないだろうから、デバッグとかに苦労する、というのはなくならないのだろうな。きれいにかけることは、形式的処理(デッドロック検出とか自動配分とか)で何かと利点ではあると思うが。

ちょっと前の記事「Parallelize your arrays with JSR 166y」ではGroovyでさらに簡単に書き下そうとしたものですが、今日のこの記事「Concurrency in JSR-166y Meets Groovy: Process Collections in Parallel」ではcollectとかfineAllを動的メソッドとして拡張して、さらに簡単に手軽に使えるようにしております。