2014年4月22日 星期二

Thread安全

 Thread之間存取變數的時間差可能導致變數存取的錯誤

- (void)setMyVar:(id)inMyVar { 
 [myVar release];
#warmming 這裡會有時間差 
 myVar = [inMyVar retain]; 
}

可以用Lock去鎖定,或是用下列的寫法來保證線程安全
- (void)setMyVar:(id)inMyVar { 
id tmp = myVar; 
myVar = [inMyVar retain]; 
[tmp release]; 
}

沒有留言:

張貼留言