マルチスレッドデザインパターン
概要 Thread-Specific Storageパターン 詳細 スレッドの入り口は1つでも、内部で固有領域が用意されておりスレッドごとに 別々に保存・取得するパターンです。 別名 ・Per-Thread Attribute ・Thread-Specific Data ・Thread-Specific Field ・Thread-Local …
概要 Two-Phase Terminationパターン 詳細 スレッドの処理をメインの処理と終了処理に分けて 安全にスレッドを終了するパターンです。 このようにしっかりと終了処理を行って実行を終えることを graceful(優雅な、上品な、礼儀正しい)と表現します。 注意点 …
概要 Worker Threadパターン 詳細 作業対象が発生するまで待機し、発生して初めて作業を行うパターン。 別名Background Thread。 注意点 ・Thread Per Messageパターンは都度スレッドを起動していたが、 Worker Threadパターンは既存スレッドを使いまわして…
概要 Thread-Per-Messageパターン 詳細 一つのメッセージに対して1つのスレッドを割り当てるパターン。 依頼者が作業者に処理を依頼すると、該当作業は別スレッドで実行され 待機する必要がないため依頼者は即別の作業を行うことが出来ます。 これにより、プ…
概要 Read-Write Lockパターン 詳細 スレッドの処理に置いて読むことと書くことの意味は異なります。 ・読み込み中に他のスレッドが読み込みをしても問題ない ・読み込み中に他のスレッドが書き込みすると本来読み込みたい内容と異なるため問題がある ・書き…
概要 Producer-Consumerパターン 詳細 生産者はデータを作成するスレッド。 消費者はデータを利用するスレッド。 生産者、消費者はどちらも1〜N存在します。 両者の間に橋渡し役を用意します。 生産者と消費者が1対1の場合はPipeパターンとも呼びます。 サン…
概要 Balking 詳細 Balking=立ち止まる、躊躇する、引き返すの位。野球のボークもこの単語。 実行されると困る条件の場合、実行せず処理の手前で実行を中止する。 実行可能な条件の際に実行するGuarded Suspentionパターンと反対の発想。 Guarded Suspentio…
概要 Guarded Suspention 詳細 スレッドを待たせてインスタンスの安全性を確保するパターン。 別名guarded wait,spin lock。 サンプル仕様 クライアントとサーバーがキューを利用してリクエストをやりとりする。 クライアントは0.0〜0.9秒に1回キューへリク…
概要 Immutable 詳細 Immutableパターンクラスが不変であることを保証し、 マルチスレッドでの実行の際に同期する必要がなくなります。 具体的にはフィールドを初期化時に設定後、変更しないようにします。 書き込み用のアクセサやメソッドは提供しません。…
概要 マルチスレッドデザインパターン 詳細 Pattern URL Single Threaded Execution http://d.hatena.ne.jp/tbpg/20130703/1372865555 Immutable http://d.hatena.ne.jp/tbpg/20130704/1372954007 Guarded Suspention http://d.hatena.ne.jp/tbpg/20130915/1…
概要 Single Threaded Execution 詳細 Single Threaded Executionは同時に一つのスレッドしか処理出来ないようなケースに 適用するパターンです。 Single Threaded Executionは別名Critical Section/Critical Regionとも呼ばれる。 サンプル仕様 ユーザーが…