
Примитивы синхронизации: NSLock, NSRecursiveLock, NSCondition
Для решения проблемы синхронизации данных в iOS есть множество решений. Начнем с базовых типов.
NSLock
Когда поток пытается заблокировать объект возможно два варианта, поток либо сможет это сделать и продолжит работу, либо будет ожидать пока другой поток, успевший раньше заблокировать объект, не вызовет unlock() тем самым освободив блокировку.
NSLock и другие блокировки Foundation несправедливы, в том смысле, что когда несколько потоков ожидает освобождения объекта блокировки, они не получат его в том порядке в каком они пытались наложить блокировку. При большом количестве потоков это может служить проблемой, когда один из потоков никогда не получит доступ в положенное время.
Для решения проблемы синхронизации данных в iOS есть множество решений. Начнем с базовых типов.
NSLock
Когда поток пытается заблокировать объект возможно два варианта, поток либо сможет это сделать и продолжит работу, либо будет ожидать пока другой поток, успевший раньше заблокировать объект, не вызовет unlock() тем самым освободив блокировку.
NSLock и другие блокировки Foundation несправедливы, в том смысле, что когда несколько потоков ожидает освобождения объекта блокировки, они не получат его в том порядке в каком они пытались наложить блокировку. При большом количестве потоков это может служить проблемой, когда один из потоков никогда не получит доступ в положенное время.