#objective-c #concurrency #reentrancy #readwritelock
#objective-c #параллелизм #повторный вход #readwritelock
Вопрос:
Кажется, я не могу найти никаких блокировок чтения-записи для Objective C. Это для разработчиков iphone. Есть идеи? В приложении в этой статье есть некоторый код, но он неполный.
Ответ №1:
Foundation предоставляет NSLock, чтобы помочь вам блокировать и разблокировать потоки, но я думаю, что это могло бы помочь вам.
Комментарии:
1. И
NSRecursiveLock
для рекурсивной блокировки. Большинство вариантов использования проще реализовать с рекурсивными блокировками. 🙂2. Спасибо, но мне нужна блокировка чтения-записи , а не просто какая-то старая блокировка
3. Я искал в Интернете, я думаю, вы можете использовать только pthread_rwlock_t и связанные с ним команды
Ответ №2:
Вы можете использовать dispatch_barrier_async
функцию и параллельную очередь для реализации блокировки чтения-записи.
dispatch_queue_t queue = dispatch_queue_create("your queue name", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queue, ^{
// execute read task 1
});
dispatch_async(queue, ^{
// execute read task 2
});
dispatch_barrier_async(queue, ^{
// execute write task 1
});