「そうめん」再履修(1)
2008/12/05 20:19 - AS3.0
以前のシリーズを終えてから後も、いろいろと「そうめん」を触っていたんですが、何か頭がごちゃごちゃしてきて、よく分かんなくなってきました。
ボクってば取説読まずにいきなり機械に触るタイプ。 だもんで公式配布ソースをいろいろと弄くる前にオリジナルのドキュメントをあまり読み込んでいなかったんですよ。 おかげでもう息切れしてやんの。
それに Java の Thread モデルについてに全く知らないというのも如何なものか。
これじゃイカンので今まで得た知識をリセットしますよ。
で、先般購入した「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」を読んで Java の Thread についての知識を仕入れたうえで、オリジナルドキュメントを最初からじっくり読み直してみました。
その結果「そうめん」についてあらためて認識したことを、これから書き連ねてみたいと思います。
まず「そうめん」というのは、以下のふたつの顔を持っているということに意識的であるべきだと感じました。
- 擬似マルチスレッドシステムである
- 非同期処理をスマートに記述できる
作者さまもレビュアーも専ら後者の方を宣伝・注目しています。
私も当初は後者にのみ目を惹かれ、前者は完全に無視していました。 でも実は前者の仕組みや挙動の理解なくして、後者の真の理解は得られないのではないか、スレッドクラスの最適な設計のために、ひいては「そうめん」自体を使いこなすためには前者の理解が必須なのではないか、と今は考えている次第。
そしてもうひとつ。 以下のふたつの項目についても意識的であるべきだと感じます。
私はこれらの項目は次のように定義されるものであると認識しました。
スレッド(Class)
- コーダが恣意的に設定できる処理単位
- ひとつ以上の実行関数から成る
- 入れ子構造をとることが可能
- スレッドクラスとして実装される
実行関数(Function)
- システム的に制約された処理単位
- この実行関数を切り替えることで擬似マルチタスクを実現している
- 処理の最小単位
- スレッドクラス内の関数として実装される
- run() メソッドはプリセットされた実行関数
そしてプログラム設計に当たって重要なのは、スレッドよりもむしろ実行関数の方なのではないでしょうか。
プログラムで発生する処理過程のどこからどこまでをひとつの実行関数とするのかということが、プログラム設計上かなり重要なポイントになるような気がします。
続く。