我有一個非常簡單的問題,我希望有人能指出我在正確的方向。我是一名Java開發人員,試圖找出正確的客觀C方法來實現全局鎖定。我有一個在幾個地方實例化的類。每個實例讀取和寫入一個單一的通用文件。因此,我需要確保這個類中的所有方法調用都是原子的。整個班級鎖定目標C
static Object lock
public void writeToFile(){
synchronized(lock){
//thread safe code goes here
}
}
靜態標識符將意味着,鎖定對象在所有實例共享,並會因此是線程:在Java如下這將被完成。不幸的是,由於iOS沒有類似的變量,我不確定實現這個功能的最佳方式是什麼。
注:我試圖做@synchronized(self.class),沒有任何抱怨,但我不是100%確定這是正確的方法來解決這個問題? – akhalsa
@synchronized(self.class)'確實可以工作並阻止該類的所有對象。如果你只是想鎖定這個實例,請改用'@synchronized(self)'。如果您需要非阻塞鎖,請參閱http://stackoverflow.com/questions/17396945/how-do-i-check-if-an-object-is-being-synchronized/17399427#17399427 –