У меня есть некоторый код Objective-C, который использует NSLock для реализации своего рода транзакции. Объект заблокирован в «транзакции начала», несколько других вызовов выполняются с установленной блокировкой, а затем он освобождается с помощью «фиксации». Я пишу слой клея JNI для доступа к этому коду из Java, но в JNI и чистом объектном коде блокировка ведет себя по-другому.
У меня есть модульные тесты на Java и objc, которые осуществляют код, который делает блокировку. Тест objc проходит, но в тесте Java [anNSLock tryLock] возвращает false, хотя [anNSLock lock] не был вызван.
Есть ли рекомендуемый способ иметь мьютекс в JNI? Я не уверен, каков основной механизм NSLock.
Спасибо!