требуется блокировка чтения-записи в objective c или c

#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
    });