0
スレッドは、条件uniqueInstance == null
がtrueに設定されている場合にのみ同期コードを入力するため、クリティカルセクション内で再度チェックする必要はありますか?シングルトンパターン - なぜ可変変数の初期化を2回確認する必要がありますか?
スレッドは、条件uniqueInstance == null
がtrueに設定されている場合にのみ同期コードを入力するため、クリティカルセクション内で再度チェックする必要はありますか?シングルトンパターン - なぜ可変変数の初期化を2回確認する必要がありますか?
ためのチェックと同期の呼び出しの間に、あなたは、セマフォを取得し、別のプロセスによって中断されている可能性がシングルトンに書き、終了します。もう一度チェックしない限り、すでに初期化されている他のプロセスの値を上書きする可能性があります。
一方、メソッド全体を同期させると、最初の呼び出しだけではなく、シングルトンの呼び出しごとに同期コストがかかります。 2回チェックする方がいいです。
ああ、私は理解しています - あなたはmutexが "スレッド"だけで動作すると言っていますが、他のいくつかの "プロセス"は中間のものを壊す可能性があります。 –
その場合、セマフォーとmutexの両方を使用できないのですか? –
優先度の高いスレッドがいつでも起動できます。それとプロセスの間に違いはありません。両方とも、あなたの前にあなたを妨害し、シングルトンを設定することができます。 –