(можно просто текстом) в каких условиях используется например NSLock? NSRecursicveLock? NSCondidtionLock?
вариант ответа:
Например у нас есть задача отредактировать массив и залить его в CoreData
для того чтобы не залить в память неотредактированный массив мы создаем поток в котором происходит редактирование после чего будет подан сигнал во второй поток о том что можно стартовать записывать в память. То есть сначала блокируется доступ к данным (редактором) затем освобождается и блокируется доступ (сохранятелем)
Сорян за long read но правильно ли я понимаю суть?
Для CoreData сейчас существует высокуровневой API которе разруливает проблемы с многопоточностью. Так как CoreData не Thread-Safe, то дергать ее обькты можно только из того потока в котором объект создан. NSLock - просто заблокирвать. NSRecursicveLock - заблокировать для других потоков(что бы если у тебя рекурсия не блокировало) NSRecursicveLock , NSLock - это уже старое API, сейчас везде используют GCD, OperationQueue и мало того появились еще более модные штуки. Я честно говоря такие штуки в проектах уже 7 лет не видел.
А ничосе) ок а без конкретных инструментов , когда требуется умышленно блочить поток? User case так сказать?
ну так для этого есть GCD
Пример пожалуйста использования, без кода
Обсуждают сегодня