C++ で Immutable パターン

マルチスレッドプログラミングにおいて何故排他制御が必要かと言うと、それは同じデータ(もしくはデータセット)に対して  read と write が同時に起こると不都合なケースがあるからです。

「それならデータを書き込めなくしてしまおう(排他制御のオーバーヘッドもなくなるし)」 と言うのが Immutable パターンです。

このパターンについてはあまり C++ かどうかは関係ないですが、具体的には setter を持たず getter オンリー、かつコンストラクト時にパラメータをすべて初期化するクラスを作ります。このクラスのインスタンスはコンストラクト以降、外部から状態を変更することができませんので排他制御なしに複数のスレッドから 読み放題になります。

C++ でマルチスレッドデザインパターン

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中