[前][次][番号順一覧][スレッド一覧][生データ]

langsmith:131

From: "HAMADA, Masaaki" <allchapters nifty.com>
Date: Tue, 28 Sep 2004 00:46:15 +0900
Subject: [langsmith:131] 並行プログラミングのサポート

濱田全章です。

プログラミング言語の並行プログラミングのサポートについてです。
Javaはデビュー当時では言語レベルでマルチスレッドプログラミングを
サポートということで話題になったかと思いますが、今ではそのサポート
もプリミティブすぎるという話をよくききます。

最近C#の派生言語らしいCω(C-omega)のニュースが流れたので、私も
ちょっとドキュメントをあさって読んでみました。C#のマルチスレッド
プログラミングサポートはほぼJavaと同様ですが、そこに加えて(もしくは
置き換えて?)Join-Calculusをベースとした同期機構を加えている、
とのことです。

Join-Calculusについてはよく知りませんが、どうもCCSやCSPのような
プロセス代数をベースにしたものらしく、例えば Reader-Writer Lock
は次のように、

http://research.microsoft.com/Comega/
"Modern Concurrency Abstractions for C#"より引用
> class ReaderWriter
> {
>   ReaderWriter() { idle (); }
>   public void Shared() & async idle() { s (1); }
>   public void Shared() & async s(int n) { s(n+1); }
>   public void ReleaseShared() & async s(int n) {
>     if (n == 1) idle (); else s(n-1);
>   }
>   public void Exclusive() & async idle() {}
>   public void ReleaseExclusive() { idle (); }
> }

詳しくは論文を読んでいただくとして説明は省きますが、
うーんどうなんでしょうか?
C#の派生だからもっとプラクティカルなものだろう思っていたのでこれには
ちょっと面食らいました。
このスタイルだときっとデットロックなどの諸問題から開放されるのだろう
とは思いますがこれを使いこなせる人は限られるのではないかな・・
少なくとも私はこれをすぐには理解できませんでした。
# Xenの方はわかりやすかったですけども

安全なマルチスレッドを実現したいだけならもっと単純にActiveObject
モデルの非同期メッセージ通信のサポートで十分だと思うだけどなぁ。
私は仕事で組み込み機器用のソフトウェア開発をやっていますが、分野的
にデットロックなどを極度に嫌うのでそこではこのActiveObjectモデルで
設計されることが多いです。

でもActiveObjectモデルだとコンテキストが分断されるのがネックなので、
そこはcoroutineが併用できればよし、できればそれが言語レベルでサポート
されてればなぁと常々思っています。
# Ioというプロトタイプベースの言語(http://www.iolanguage.com/)は
# どうもそれっぽいことができるらしいです

でもこれがはたして本当に十分なのかどうかはよくわからないです。
ある程度プログラミングのスタイルを型にはめていくことは必要だと
思うけど、かといって特殊なものを押し着せてしまうわけにもいかない。
皆さん今後のプログラミング言語の並行プログラミングのサポートに
ついてどう思われますか?

-- 
濱田 全章
HAMADA, Masaaki <allchapters nifty.com>


--
ML: langsmith quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

->     131 2004-09-28 00:46 [allchapters nifty.co] 並行プログラミングのサポート            
       132 2004-09-28 09:09 ┣[matz ruby-lang.org  ]                                       
       133 2004-09-29 03:22 ┃┗[allchapters nifty.co]                                     
       149 2004-10-09 23:59 ┃ ┗[maeda-langsmith atus]                                   
       152 2004-10-12 21:43 ┃  ┗[allchapters nifty.co]                                 
       153 2004-10-12 23:43 ┃   ┗[maeda-langsmith atus]                               
       157 2004-10-14 13:00 ┃    ┣[maeda-langsmith atus]                             
       158 2004-10-15 00:30 ┃    ┗[allchapters nifty.co]                             
       159 2004-10-15 02:08 ┃     ┗[maeda-langsmith atus] CPS (Re: 並行プログラミングのサポート)
       134 2004-10-05 00:53 ┗[mas pb.highway.ne.jp]                                       
       137 2004-10-07 01:18  ┗[allchapters nifty.co]