えちょ記

語らないブログ

一方その頃F#の並行処理事情

絶望したままだとあれなので。
VS2010から関数言語F#がトップレベル言語に昇格するのですが、こちらの言語も非同期IOを言語レベルでサポートします。んでも、非同期IOはともかくアクターモデルサポートがないとなあ‥‥。と思ってたら、さりげなくあるし。
ということで、F#関係もちょっとリンクメモメモ。

お勧めとか見所

MSDNマガジンの記事はとりあえずどんな物か理解するのに良いかも。もう一つの方の記事は非同期関係にもう少し突っ込んでます。で、勉強に使うなら、英語ですがWIKI BOOKSが非常に秀逸です。下手に本を入手するよりこっちの方が勉強にはもってこいなのではと思えるくらい。
読み進んでいくとメッセージパッシングの記事(MailboxProcessor)に突き当たります。つまりこの当たりがアクターモデルを実現するための基本の仕組みです。Axumほど並行処理に特化したライブラリではないですが、言語仕様に対して無理しない実装で好感が持てます。
なお、メッセージパッシングの仕様は若干erlangに劣るかも。というかerlangは流石に年期が違うというか、細かく説明しませんがデッドロック回避のための仕掛けが言語仕様レベルで仕組まれています。このへんはライブラリで実現しているF#の限界かも。まあレアケースの停止可能性をとにかく潰すか、そこを諦めてシンプルで早い実装にするか、程度の話です。
逆に言えば並行処理を言語レベルでサポートするはずのAxumはその当たりの回避の仕組みは入れて欲しい物ですが‥‥はてさて?

総論

んー、F#で作ってる並行処理実装と、CCRの実装って、目的は一緒なのですが実装が違うんですよね。このへん統一感がないような気がするんですが、正式版リリースまでに改善されるのでしょうか。いずれにせよあと数日でVS2010が一般ダウンロード可能になるはずなので、そのあたり突っついてみてみますかねー。