最近の並列処理言語
の事情はどうなってるんだろう?と思いちょっと調査。
"The Free Lunch Is Over"で有名な(というかC++関係で有名な、なんだろうか)Herb Sutter氏のホームページから、氏が検討中のConcur Projectの内容を読んでみる(後半のページ)。
- "Active"を型の前に付けると、そのインスタンスのメソッド呼び出しが並列実行される。Active T x; x.call(); みたいな感じ。ABCLみたいな並行オブジェクトを志向している?
- ブロックの前に"active"を付けると、そのブロックを並列に実行する。x = active {return foo();}とか。ブロックじゃなくて無名関数?x.wait();でxの値が決まるのを待つ。
- future
でfutureが使える。PARDSのSync 相当。activeブロックの返り値はfuture? - 並列for構文みたいなのも考えているみたい。
んー、悪くは無いと思うんだけど、実装とかどうするんだろ。Microsoft様が処理系を配布すれば普及するということなんだろうか。
あと、従来の並列言語との比較がここでは言及されてないのがちょっと気になる。Compositional C++とか。
PARDSと大してできることは違わなさそうだし、それならライブラリの方が良くないかね? :-)