ピコラボで有志により開かれている読書会の議事録を以下ご紹介します。ご興味ありましたら、「お問い合わせ」フォームで気軽にコメントなど頂けると幸いです(なお、議事録の議論内容等は各参加者個人の意見であり、会社の意見ではない点、ご了承ください)。

読書会情報

  • 書籍
    • 増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編
  • 発表対象
    • Chapter 9

質問・議論

資料の最初の疑似コードについて

質問: 疑似コードの内容を読み取れない
回答: (疑似コードの説明)
質問: Future パターンはある種のスマートポインタだという主張?
回答: Yes

Data インタフェースについて

質問: Future と RealData に共通のインタフェースを持たせる意図は?
(続): Java や C# ではそうなっていないので気になる
議論: Future であることを意識させるかどうか
(続): Nullable と Optional のような関係?
(続): Haskell の monad と Do 記法の関係?

Thread-Per-Message との関係

質問: Thread-Per-Message とは直交する概念ではないか?
回答: そうだと思う
議論: Thread-Per-Message はスレッド起動に関するパターン
(続): Future は非同期処理での戻り値に関するパターン

各言語の非同期処理との関係

質問: C# の Task は処理内容と Future の両方の機能を持つと思えばよいか?
議論: Java でも RunnableFuture というのがある

練習問題 9-4 について

質問: Exception ではなく Throwable を catch すべきではないのか?
回答: わからない
議論: 教科書の回答例では Exception を catch している
議論: Throwable を catch したとして ExecutionException に wrap して投げるのか?
議論: インタフェースに ExecutionException が露出するのはどうなのか?

C++ でのプログラム実装について

質問: lock の仕組みについて教えてほしい
回答: コンストラクタ、デストラクタでロックの取得と開放を行う
(続): スコープを抜けたところでロックが解放される
質問: 子クラスに空のデストラクタ定義は必要?
回答: 親クラスで純粋仮想関数としているので必要