NSLock
NSLock
объект используется для координирования работы многократных потоков выполнения в том же приложении. NSLock
объект может использоваться, чтобы добиться доступа к глобальным данным приложения или защитить критический раздел кода, позволяя ему работать атомарно.
Вы не должны использовать этот класс для реализации рекурсивной блокировки. Вызов lock
метод дважды на том же потоке запрет Ваш поток постоянно. Используйте NSRecursiveLock
класс для реализации рекурсивных блокировок вместо этого.
Разблокирование незаблокированной блокировки считают ошибкой программиста и нужно фиксировать в Вашем коде. NSLock
класс сообщает о таких ошибках путем печати сообщения об ошибке к консоли, когда они происходят.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSLocking
-
NSObjectProtocol
-
Печатаемый
-
NSLocking
-
NSObject
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
-
Попытки получить блокировку перед данным временем и возвратами булево значение, указывающее, была ли попытка успешна.
Объявление
Swift
func lockBeforeDate(_
limit
: NSDate) -> BoolObjective C
- (BOOL)lockBeforeDate:(NSDate *)
limit
Параметры
limit
Ограничение по времени для попытки получить блокировку.
Возвращаемое значение
YES
true
если блокировка получена преждеlimit
, иначеNO
false
.Обсуждение
Поток блокируется, пока получатель не получает блокировку или
limit
достигнут.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Попытки получить блокировку и сразу возвращают булево значение, указывающее, была ли попытка успешна.
Объявление
Swift
func tryLock() -> Bool
Objective C
- (BOOL)tryLock
Возвращаемое значение
YES
true
если блокировка была получена, иначеNO
false
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Имя связалось с получателем.
Обсуждение
Можно использовать строку имени для идентификации блокировки в коде. Какао также использует это имя в качестве части любых описаний ошибок, включающих получатель.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.