並行プログラミングの設計に関する本に関して適当にググると 「並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング」とか「マルチコアCPUのための並列プログラミング」とかいったものが出てくる。これらの本の主題は、ソートや探索などの比較的大きな計算問題をどのように並列化して解くか、そしてアルゴリズムを問題の大きさやスレッドの数に対してどうスケールさせるかといふことだ。
しかし、一般的な GUI アプリ開発では、GUI を操作するためのスレッドと他のスレッドとの通信や同期の仕方が問題になる。これがうまく出来てゐないアプリでは、例えば
- 処理を行ってゐる間、アプリが操作を受け付けなくなる
- 処理を開始するボタンを素速く二回クリックしたら、二つの操作の結果が混ざって出力されたり片方の結果しか出力されなかったりする
などといった問題が発生したりする。
この類の問題を起こさないために必要なのは、大きな問題を並列化するアルゴリズムの知見ではなく、イベント駆動型パラダイムにおける通信・同期の方法論だ。さういふ方法論を勉強するのに適切な本や教材を (人に教へるために) 探してゐるのだが、見付からない。
リスナーを登録できる Future やアクターモデルが普及したと言ひがたい現状では、さういふ教材の存在を期待するのは尚早なのだらうか。