0

スレッドは、条件uniqueInstance == nullが true に設定された場合にのみ同期コードに入ります。クリティカル セクション内で再度チェックする必要はありません。

ここに画像の説明を入力

4

1 に答える 1

0

チェックと同期呼び出しの間に、セマフォを取得し、シングルトンに書き込み、終了する別のプロセスによって中断される可能性があるためです。再度確認しないと、他のプロセスが既に初期化した値を上書きする可能性があります。

一方、メソッド全体を同期させると、最初の呼び出しのみではなく、シングルトンへのすべての呼び出しで同期のコストが発生します。2回確認したほうがいいです。

于 2012-05-07T10:02:37.857 に答える