NSRecursiveLock



Рекурсивные блокировки могут быть получены несколько раз из потока, который уже держит эту блокировку. Это полезно в рекурсивной функции или при вызове нескольких функций, которые проверяют одну и ту же блокировку в последовательности.



Если заменить NSRecursiveLock на NSLock, выполнение, хотя и внутри одного потока, встанет на вызове rlock.lock() метода callMe()