[英]iOS Objective-c synchronized
在Java中,如果我在一個方法中同步了關鍵字,那么無論哪個線程,它都將阻止多個線程同時執行:
public synchronized void doSomething() {
//synchronous code here
}
在Objective-C中,如果這樣做,結果是否相同?
-(void)doSomething{
@synchronized (self) {
//synchonous code here
}
}
是的,請注意。
@synchronized
指令創建一個互斥鎖-防止大括號內的代碼同時由不同線程執行。 需要注意的是,它使用傳遞給它的對象作為唯一標識符來區分受保護的塊。 因此,如果您在兩種不同的方法中使用@synchronized(self)
,則會阻止這兩種方法同時由不同的線程執行(因為它們共享相同的標識符(在本例中為self
))。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.