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?(path
aPath
: 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() -> Bool
Objective C
- (BOOL)tryLock
Возвращаемое значение
YES
true
если попытка получить получатель была успешна, иначеNO
false
.Обсуждение
Повышения
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 и позже.