iOS Objective-c синхронизирован - PullRequest
       60

iOS Objective-c синхронизирован

0 голосов
/ 19 февраля 2019

В Java, если у меня есть ключевое слово synchronized в методе, это предотвратит выполнение более чем одним потоком одновременно, независимо от того, какой поток:

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

В target-c, если я сделаю это, получу ли я такой же результат?

-(void)doSomething{
    @synchronized (self) {
       //synchonous code here
    }
}

1 Ответ

0 голосов
/ 19 февраля 2019

Да, с оговоркой.

Директива @synchronized создает блокировку мьютекса, предотвращая одновременное выполнение кода в фигурных скобках разными потоками.Предостережение заключается в том, что он использует переданный ему объект в качестве уникального идентификатора для различения защищенного блока.Поэтому, если вы используете @synchronized(self) в двух разных методах, эти два метода не могут выполняться разными потоками одновременно (потому что они имеют один и тот же идентификатор (в данном случае self)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...