objective-c:@synchronized,它是如何工作的?

g.r*_*ion 16 iphone multithreading semaphore objective-c

我有两种方法

-(void) a {
   @synchronized(self) {
      // critical section 1 
   }
}

-(void) b {
   @synchronized(self) {
      // critical section 2 
   }
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,如果一个线程处于关键部分1,那么关键部分2是否会被其他线程锁定,或者其他线程可以访问关键部分2.

mip*_*adi 28

关键部分2也将被阻塞到其他线程,因为您正在同一个对象(self)上进行同步.