target-c: @synchronized, как это работает? - PullRequest
16 голосов
/ 11 мая 2010

у меня есть два метода

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

-(void) b {
   @synchronized(self) {
      // critical section 2 
   }
}

Теперь мой вопрос: если поток находится в критической секции 1. Будет ли критическая секция 2 заблокирована для других потоков, или другие потоки смогут получить доступ к критической секции 2.

1 Ответ

28 голосов
/ 11 мая 2010

Критический раздел 2 будет заблокирован и для других потоков, поскольку вы синхронизируете на одном и том же объекте (self).

...