由於內存模型,我意識到在java中雙重檢查鎖定存在缺陷,但通常與單例模式相關聯並優化單例的創建。雙重鎖定 - 目標c
怎麼樣在這種情況下,在Objective-C:
我有一個布爾標誌,以確定是否我的應用程序是流數據或沒有。我有3種方法,startStreaming,stopStreaming,streamingDataReceived我使用保護他們從多個線程:
- (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) {
這是雙重檢查uneccessary? objective-c中的雙重檢查是否與java中的問題類似?這種模式有哪些替代方案(反模式)。
感謝
你能證明這個答案嗎? – 2012-07-26 13:23:39
您可以擴展答案以添加替代方案的建議。例如,Objective-C中是否存在與「transient」或AtomicInteger /等同等的內容? – 2013-07-03 13:00:21