Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
スレッドは、条件uniqueInstance == nullが true に設定された場合にのみ同期コードに入ります。クリティカル セクション内で再度チェックする必要はありません。
uniqueInstance == null
チェックと同期呼び出しの間に、セマフォを取得し、シングルトンに書き込み、終了する別のプロセスによって中断される可能性があるためです。再度確認しないと、他のプロセスが既に初期化した値を上書きする可能性があります。
一方、メソッド全体を同期させると、最初の呼び出しのみではなく、シングルトンへのすべての呼び出しで同期のコストが発生します。2回確認したほうがいいです。