「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」 という本を読みましたので感想などを書いてみます。
本書は、マルチスレッドソフトウェアで頻繁に使用される12種類のソフトウェアパターンの紹介と、 JavaのサンプルコードやTipsを集めた本です。
本書には、synchronized、wait、notifyの使い方など、タイトル通りJava特有の部分もありますが、 パターンのコンセプトや利点・欠点などは言語を問わない共通の部分もありました。 私はC++ユーザなので、後者を特に興味深く読ませて頂きました。
本書で紹介されているパターンは、オブジェクト指向における再利用のためのデザインパターン にあるような応用的なものというよりも、 マルチスレッドソフトウェアを作るために必須となる基本的なものでした。
例えば、本書記載のSingle Threaded Executionパターンは、クリティカルセクションのことなので、
これを使わずにマルチスレッドソフトウェアを作ることは無理でしょう。
Thread-Per-Message又はWorker Threadパターンも少なくとも片方は必須になるでしょうし、
安全に終了するマルチスレッドソフトウェアを書こうとしたらTwo-Phase Terminationパターンは必須になります。
その他のパターンも基本的なものが多く、まともに動作するマルチスレッドソフトウェアを作ったことがある人は、
ほとんどのパターンを使ったことがあると思います。
最後に紹介されているActive Objectパターンはちょっと大掛かりなので使ったことがない人も居るでしょうが、
分散プログラミングをやったことがある人にはお馴染みの構成でしょう。
よって、今までマルチスレッドソフトウェアを作ったことがないという人にはお勧めの一冊です。 言語を問わず使えると思います。
マルチスレッドに関わったことがある人にとっては、新しいノウハウを提供できるという本ではないと思いますが、
それでも、共通の語彙を得られるという点でお勧めできます。
特に、マルチスレッドソフトウェアについての解説記事を書く方にお勧めです。
例えば、「メインのスレッドがこの処理を実行するためのオブジェクト作り、それを裏で動いているスレッドに渡して実行する方式です」
という長い分かり難い説明が、「Worker Threadパターンです」という説明で終わります。
他にも、クラス名や関数名を本書の内容と合わせると、分かりやすいコードになると思いますので、
命名に悩んでいるマルチスレッドソフトウェア開発者にもお勧めです。
なお、本書記載のパターンのC++による実装方法については、以下のページが参考になると思います。
デザインパターン(マルチスレッド)まとめ
ご紹介どうもありがとうございます。
C++ユーザの私にも参考になりそうな感じでしょうか。Javaの本のようですのでそのあたりが心配です。
私もこの本はお気に入りです。
あと、この本の次に読むなら Java並行処理プログラミング http://www.amazon.co.jp/dp/4797337206 がお勧めだと思います。