172 похожих чатов

Ребята привет Учу многопоточность, но голая теория не настолько демонстративна подскажите пожалуйста

(можно просто текстом) в каких условиях используется например NSLock? NSRecursicveLock? NSCondidtionLock?

вариант ответа:
Например у нас есть задача отредактировать массив и залить его в CoreData
для того чтобы не залить в память неотредактированный массив мы создаем поток в котором происходит редактирование после чего будет подан сигнал во второй поток о том что можно стартовать записывать в память. То есть сначала блокируется доступ к данным (редактором) затем освобождается и блокируется доступ (сохранятелем)

Сорян за long read но правильно ли я понимаю суть?

4 ответов

5 просмотров

Для CoreData сейчас существует высокуровневой API которе разруливает проблемы с многопоточностью. Так как CoreData не Thread-Safe, то дергать ее обькты можно только из того потока в котором объект создан. NSLock - просто заблокирвать. NSRecursicveLock - заблокировать для других потоков(что бы если у тебя рекурсия не блокировало) NSRecursicveLock , NSLock - это уже старое API, сейчас везде используют GCD, OperationQueue и мало того появились еще более модные штуки. Я честно говоря такие штуки в проектах уже 7 лет не видел.

original-Denisov Автор вопроса
Dmytro Hrebeniuk
Для CoreData сейчас существует высокуровневой API ...

А ничосе) ок а без конкретных инструментов , когда требуется умышленно блочить поток? User case так сказать?

original-Denisov Автор вопроса
Dmytro Hrebeniuk
ну так для этого есть GCD

Пример пожалуйста использования, без кода

Похожие вопросы

Обсуждают сегодня

подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
11
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
народ хелп. предыстория: pro-2015+high sierra ставил imazing[TNT], да еще что-то TNT, при попытке перетащить иконку в "программы" - кернел паники и мак перезагружался в один п...
Gcat@
7
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
Народ, есть возможность объяснить VS Code, что некий lua-модуль стандартный и грузится по умолчанию? Т.е. хост программа добавляет этот модуль наряду с модулями string, debug ...
Sl
9
Добрый день. Абракадабра в 12-й студии ввела новый тип поля БД TSQLTimeStampOffset, использую в постгресе timestampz и вот с 12-й версии начались чудеса! До этого поля times...
Delphi Photo
9
Коллеги, здравствуйте! А можно узнать ваше мнение относительно Wolfram Mathematica vs Julia? Просто у меня стоит выбор между тем, чтобы продолжить преподавать Wolfram Mathemat...
Илья Гаража
10
Карта сайта