第四十一条: 多用派发队列,少用同步锁

2021-12-07  本文已影响0人  iOS博仔

    在Objective-C中,如果有多个线程要执行同一份代码,那么有时可能会出问题。这种情况下,通常要使用锁来实现某种同步机制。在GCD出现之前,有两种办法,第一种是采用内置的"同步块"(synchronization block):

- (void)synchronizedMethod{
  @synchronized(self){
    //Safe
  }
}

    这种写法会根据给定的对象,自动创建一个锁,并等待块中的代码执行完毕。执行到这段代码结尾处,锁就释放了。在本例中,同步行为所针对的对象是self。这么写通常没错,因为它可以保证每个对象实例都能不受干扰地运行其synchronizedMethod方法。

上一篇 下一篇

猜你喜欢

热点阅读