Вопрос проверяет понимание различий между высокоуровневыми и низкоуровневыми примитивами синхронизации в iOS.
Короткий ответ
NSLock — это объектная обёртка над mutex, предназначенная для взаимного исключения. Semaphore — более универсальный примитив, работающий на основе счётчика. NSLock всегда пускает только один поток в критическую секцию, semaphore может пускать несколько. NSLock проще и безопаснее для защиты данных. Semaphore чаще используется для координации потоков и ограничения параллелизма.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.