objective-c 多執行緒注意的問題

OpenSoucre發表於2013-11-28

1、資源競爭:當每個執行緒都去訪問同一段記憶體時,會導致所謂i資源競爭問題,這時候可以通過“@synchronized block”將例項變數包圍起來,建立一個互斥鎖,

  這樣你就可以確保在互斥鎖中的程式碼一次只能被一個執行緒訪問:

@synchronized(self){
       a.object = value;  
}

2、原子性:將一個property宣告為atomic時,通常會把它包裹在一個@synchronized塊中,確保是執行緒安全的

@property (atomic, retain) NSString *myString;

- (NSString *)myString {
    @synchronized (self) {

        return [[myString retain] autorelease];

    }

}

 

相關文章