Блокирует ли одна функция из потока, блокирует все остальные потоки, пытаясь получить блокировку в разных функциях.@synchronized (self) блок в нескольких местах для нескольких ресурсов в многопоточной среде, объект c
Мы можем использовать gcd для доступа к критическим разделам, упомянутым ниже, просто хотели знать, как работает @synchronized (self). Для примера.
Выполняет ли несколько потоков с ТОЛЬКО вызовами writeString() блокируется, когда выполнение выполняется в @synchronized (self) {} в writeString()?
OR все потоки, вызывающие функции одного и того же класса с @synchronized (self) {} (например .readDataFromFile()) блокируются,
-(void)writeString:(NSString*)string forObj:(id)obj
{
@synchronized(self)
{
[obj write:string];
}
}
-(void)readDataFromFile:(NSString*)file
{
@synchronized(self)
{
[self read];
}
}
Добро пожаловать в Stackoverflow! Вам не нужно копировать заголовок в тело вопроса. – kelin
Вам нужно показать свой код. То же 'self' или другое' self'? – bbum
@shweta Бытие того же класса не имеет значения. Это тот же * экземпляр *? – bbum