NSDistributedLock
NSDistributedLock класс определяет объект, который многократные приложения на многократных узлах могут использовать для ограничения доступа к некоторому совместно используемому ресурсу, такому как файл.
Блокировка реализована записью (такой как файл или каталог) в файловой системе. Для многократных приложений для использования NSDistributedLock возразите для координирования их действий, блокировка должна быть перезаписываема в файловой системе, доступной для всех узлов, на которых могли бы работать приложения.
Используйте tryLock метод, чтобы попытаться получить блокировку. Необходимо обычно использовать unlock метод для выпуска блокировки, а не breakLock.
NSDistributedLock не соответствует NSLocking протокол, и при этом это не имеет a lock метод. Протокол lock метод предназначается для блокирования выполнения потока до успешный. Для NSDistributedLock объект, это могло означать опрашивать файловую систему на некотором предопределенном уровне. Лучшее решение состоит в том, чтобы обеспечить tryLock метод и позволил Вам определить частоту запросов, которая целесообразна для Вашего приложения.
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
-
Возвраты
NSDistributedLockобъект, инициализированный для использования в качестве блокировки, возражает записи файловой системы, указанной данным путем.Объявление
Objective C
+ (NSDistributedLock *)lockWithPath:(NSString *)aPathПараметры
aPathВесь из
aPathдо самого последнего компонента должен существовать. Можно использоватьNSFileManagerсоздать (и установить полномочия) для любых несуществующих промежуточных каталогов.Возвращаемое значение
NSDistributedLockобъект, инициализированный для использования в качестве блокировки, возражает записи файловой системы, указаннойaPath.Обсуждение
Для приложений для использования блокировки,
aPathдолжно быть доступно для — и перезаписываем — все узлы, на которых могли бы работать приложения.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
См. также
-
init (путь:) - initWithPath:Определяемый инициализаторИнициализирует
NSDistributedLockвозразите для использования в качестве блокировки записи файловой системы, указанной данным путем.Объявление
Swift
init?(pathaPath: String)Objective C
- (instancetype)initWithPath:(NSString *)aPathПараметры
aPathВесь из
aPathдо самого последнего компонента должен существовать. Можно использоватьNSFileManagerсоздать (и установить полномочия) для любых несуществующих промежуточных каталогов.Возвращаемое значение
NSDistributedLockобъект, инициализированный для использования в качестве блокировки, возражает записи файловой системы, указаннойaPath.Обсуждение
Для приложений для использования блокировки,
aPathдолжно быть доступно для — и перезаписываем — все узлы, на которых могли бы работать приложения.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Попытки получить получатель и сразу возвращают булево значение, указывающее, была ли попытка успешна.
Объявление
Swift
func tryLock() -> BoolObjective C
- (BOOL)tryLockВозвращаемое значение
YEStrueесли попытка получить получатель была успешна, иначеNOfalse.Обсуждение
Повышения
NSGenericExceptionесли происходит ошибка файловой системы.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Вынуждает блокировку быть оставленной.
Объявление
Swift
func breakLock()Objective C
- (void)breakLockОбсуждение
Этот метод всегда успешно выполняется, если не была повреждена блокировка. Если другой процесс уже разблокировал или повредил блокировку, этот метод не имеет никакого эффекта. Необходимо обычно использовать
unlockвместоbreakLockоставить блокировку.Даже при повреждении блокировки нет никакой гарантии, что Вы тогда будете в состоянии получить блокировку — другой процесс мог бы получить ее перед Вашим
tryLockвызывается.Повышения
NSGenericExceptionесли не могла бы быть удалена блокировка.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Оставляет получатель.
Объявление
Swift
func unlock()Objective C
- (void)unlockОбсуждение
Необходимо обычно использовать
unlockметод, а неbreakLockвыпускать блокировку.NSGenericExceptionесли получатель уже не существует, повышен.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает время, получатель был получен любым из
NSDistributedLockобъекты с помощью того же пути.Объявление
Swift
@NSCopying var lockDate: NSDate { get }Objective C
@property(readonly, copy) NSDate *lockDateВозвращаемое значение
Время получатель было получено любым из
NSDistributedLockобъекты с помощью того же пути. Возвратыnilесли не существует блокировка.Обсуждение
Этот метод потенциально полезен для приложений, хотящих использовать эвристику возраста, чтобы решить, слишком стара ли блокировка и должна быть повреждена.
Если дата создания на блокировке не является датой, на которую Вы заблокировали его, Вы потеряли блокировку: это было повреждено, так как Вы в последний раз проверили его.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
