0

Meyer、Phoenix など、C++ でのシングルトン実装アプローチについて多くのことを聞いたり読んだりしましたが、それらはすべて特定の使用シナリオで問題があるように見えました。そこで私は、独自の実装アプローチであるDaniel Singletonを思いつきました。私が知りたいのは、それが正しいかどうかです... 正しいと思いますが、思いもよらなかった欠陥があれば教えてください!

また、ダブルチェックロックを使用して、常にロックを取得することなくスレッドセーフにしようとしましたが、これについてもよく読んだのですが、誰もが壊れていると述べました。私もそれを修正しようとしましたが、私の解決策が正しいかどうかを知りたいです...そうでない場合、どうして失敗するのでしょうか?

4

2 に答える 2

4

シングルトン パターン自体は、恐ろしいコードになるという点で壊れています。依存性注入/制御の反転を使用する方がはるかに優れています。ここでシングルトンの回避に関する私のページを参照してください。

シングルトン クラスは不必要に複雑です。怠惰なシングルトン パターンを実装しているように見えますが、まだロックを取得しているため、不必要に複雑にすることは別として、単純な怠惰なシングルトンの実装とどう違うのかわかりません。実装をベンチマークして、より単純な代替手段よりも高速かどうかを判断しましたか? より複雑なものに対応するために、明確なパフォーマンスの勝利を見たいと思います.

于 2011-02-13T21:32:14.483 に答える
1

ダブルチェックされたロックパターンは、ASCIIおよびIEE754フローティングポイントのようなものです。正式に保証されていなくても、これまでに目にするすべてのシステムで十分に機能すると考えるのはかなり安全です。

于 2011-02-14T10:01:14.090 に答える