在 Java 中,如果我在方法中使用关键字 synchronized,它会阻止同时被多个线程执行,无论线程是什么:
public synchronized void doSomething() {
//synchronous code here
}
在 objective-c 中,如果这样做,我会得到相同的结果吗?
-(void)doSomething{
@synchronized (self) {
//synchonous code here
}
}
最佳答案
是的,有一个警告。
@synchronized
指令创建互斥锁——防止大括号内的代码被不同的线程同时执行。需要注意的是,它使用传递给它的对象作为唯一标识符来区分 protected block 。因此,如果您在两种不同的方法中使用 @synchronized(self)
,这两种方法将无法同时被不同的线程执行(因为它们共享相同的标识符(在本例中 self
)).
关于iOS Objective-c 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54773292/