2012-08-25 2 views

ответ

2

Один из вариантов заключается в использовании @synchronized в методе.

- (NSString *)someMethod { 
    @synchronized(self) { 
     // do some work 
    } 
} 

Это позволяет метод, который будет вызван, но будет синхронизировать на себя и защитить свою работу (и что более важно, данные, которые он работает на).

+0

Это сработало. Спасибо. У меня все еще есть сомнения. Как только процесс завершается первым потоком, имеет ли второй поток доступ к этому методу автоматически? Делают ли все остальные потоки до тех пор, пока первая нить не завершит работу? – Dee

+0

Да, оба потока входят в метод, один выполняет синхронизированный блок кода, а когда он выполняет другой, будет продолжаться выполнение. – bryanmac

+0

Вот более подробное объяснение того, что он делает: http://stackoverflow.com/questions/1215330/how-does-synchronized-lock-unlock-in-objective-c – bryanmac

0

Посмотрите на NSLock.

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSLock_Class/Reference/Reference.html

Просто найти его при поиске заявления C# блокировки, это, кажется, сделать то же самое ..

Существует также другой SO нить, связанные с синхронизацией:

How does @synchronized lock/unlock in Objective-C?

Смежные вопросы