牛、豚、鶏、どれか一つ食べられなくなるとしたら?

C++のシングルトンオブジェクトに対するポインタについて

只今C++を勉強中(すいませんが初心者)です。

タイトルの通り、C++のシングルトンオブジェクトに対するポインタについて
調べているのですが、web、手持ちの書籍上(もちろん入門系です)では確認
できなかったので、ここで質問をさせていただいております。

シングルトンオブジェクトのアドレスを保持しているポインタを、マルチスレッド
環境で利用する場合ってどの様な動きになるのでしょうか?

例えば同時アクセスされた瞬間、オブジェクト(ポインタ)は共有されるのか、
それともキューが発生してしまうのか、が知りたいです。

A 回答 (1件)

マルチスレッド環境で利用する場合には、スレッドセーフなクラス設計を行う必要があります。



「シングルトン」を名乗るからには、異なるスレッド間でもオブジェクトは共有しなければなりません。
そうなるように、オブジェクトの生成には注意が必要です。詳しくは「Double Checked Locking Pattern」について調べてみてください。

この場合「シングルトンではこうなる」というような他力本願ではなく、

・スレッド間で同じオブジェクト(ポインタ)を共有する
・(ほぼ)同時にアクセスした場合、先にアクセスした方がロックし、後にアクセスした側は先のアクセスが終わるまで待たされる(キューのような動作になる)

ように「設計する」必要があるのです。
    • good
    • 0
この回答へのお礼

なるほど。

一瞬でイメージができました。
明快な回答をありがとうございました。

お礼日時:2010/08/28 10:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!