Javaではメモリモデルが原因でダブルチェックロックに欠陥があることに気付きましたが、これは通常、シングルトンパターンに関連付けられており、シングルトンの作成を最適化します。
この場合、Objective-cではどうでしょうか。
アプリケーションがデータをストリーミングしているかどうかを判断するためのブールフラグがあります。startStreaming、stopStreaming、streamingDataReceivedの3つのメソッドがあり、以下を使用して複数のスレッドからそれらを保護します。
- (void) streamingDataReceived:(StreamingData *)streamingData {
if (self.isStreaming) {
@synchronized(self) {
if (self.isStreaming) {
- (void) stopStreaming {
if (self.isStreaming) {
@synchronized(self) {
if (self.isStreaming) {
- (void) startStreaming:(NSArray *)watchlistInstrumentData {
if (!self.isStreaming) {
@synchronized(self) {
if (!self.isStreaming) {
このダブルチェックは不要ですか?ダブルチェックには、JavaScriptと同様のObjective-cの問題がありますか?このパターン(アンチパターン)の代替手段は何ですか。
ありがとう