iOS Objective-c同步

问题描述 投票:0回答:1

在Java中,如果我在方法中使用了synchronized关键字,它将阻止同时由多个线程执行,无论是什么线程:

public synchronized void doSomething() {
  //synchronous code here
}

在objective-c中,如果这样做,我会得到相同的结果吗?

-(void)doSomething{
    @synchronized (self) {
       //synchonous code here
    }
}
ios objective-c multithreading synchronized
1个回答
1
投票

是的,有一个警告。

@synchronized指令创建一个互斥锁 - 防止大括号内的代码同时被不同的线程执行。需要注意的是,它使用传递给它的对象作为唯一标识符来区分受保护的块。因此,如果您在两种不同的方法中使用@synchronized(self),则会阻止这两种方法同时被不同的线程执行(因为它们共享相同的标识符(在本例中为self))。

© www.soinside.com 2019 - 2024. All rights reserved.