iOS Objective-c 同步

标签 ios objective-c multithreading synchronized

在 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/

相关文章:

ios - 如何从项目所依赖的 iOS 静态库运行测试

ios - 如何使用 openssl 解密使用 CCCrypt 在 Objective-C 中创建的文件?

iphone - @synthesize 到底是做什么的?

iphone - 核心数据迁移 : How to delete the Core Data stack?

Java方法线程安全

ios - 飞溅后 phonegap ios 白屏 - 如何避免

ios - 如何复制 iOS 1 0's Apple Music "Peek 和弹出操作菜单”

ios - 如果松开第一个手指,UIView touchesMoved 不会被调用

c - ANSI C 中带有 PTHREADS 的执行程序池

iOS - 如何测量线程唤醒?