[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 1419] Java Advisor 12(UNIX マガ ジン 11 月 号連載記事)



高橋(徹)です。

UNIXマガジンに連載されているJava Advisorの11月号のテーマは
「並行プログラミング」です。いつもながら短いページにほどよい
エッセンスが含まれていると一人感じ入ってます。
今月はDavid Detlefs氏です。なんとなく文章が気に入ったので、
いくつか引用します。
 “並行プログラムの場合は、100回に1回の割合でテストケースの
 実行が失敗することも珍しくない。”
これが並行プログラミングの難しさですね。数回テストしてOKにして
しまっていると、運用中に痛い目にあうことがあります。

 “現実は厳しい。"一度書けばどこでも動く(write once, run anywhere)"
 とは、プログラムがどれか1つのJVMで動けば、ほかのどんなJVMでも
 動作するという意味ではない。言語の仕様にもとづいて正しく開発され
 たプログラムは、言語を正しく実装しているJVM上であれば動作すると
 いう意味なのだ。”
なるほど、WORAの定義はこうなのですね。

 “並行処理がもたらす問題は、競合状態とデッドロックの2つに
 大別される。”
この一文を読んで、ユリウス・カエサルの「ガリア戦記」の序文を思い
浮かべてしまいました。
ローマ人の物語IVユリウス・カエサル 塩野七生著、新潮社より
 “ガリアは、そのすべてをふくめて、三つに分かれる。・・・”

内容の方は、この競合とデッドロックの問題を説明したあと、これらを
回避するためのコメントシステムの提唱が行われています。ところで、
Javaの場合セルフ・デッドロックは起きないとありましたが、すると
他の言語のスレッド機構はそうではないんですね。それは大変だ・・・

また、UNIXマガジン同月号には、Cygwinの特集記事があります。これも
大変参考になります。Cygwinの得失にも触れています。
そういえば、IBMのJavaコンパイラJikesのWindows版バイナリは、Cygwin
版と、多分Cygwin環境でコンパイルしたと思われるものの2つがあります。
# 試しにちょっと後者を使ってみましたが、Sunのjavacに比べ速いです。

--
Toru TAKAHASHI <torutk@xxxxxxxxxxx>
http://www.alles.or.jp/~torutk/