Java 基于NSRID的JNI互斥
我有一些objective-c代码,它使用NSLock实现某种事务。对象被锁定在“开始事务”上,在锁定到位的情况下进行其他几个调用,然后通过“提交”将其释放。我正在编写一个JNI粘合层来从Java访问这段代码,但是锁在JNI和纯objc代码中的行为不同 我在Java和objc中都有单元测试,用于测试生成锁的代码。objc测试通过,但在Java测试中,[anNSLock tryLock]返回false,即使没有调用[anNSLock lock] 在JNI中有没有一种推荐的互斥方式?我不确定NSLock的底层机制是什么 谢谢 的文档说NSLock使用Posix线程。Java使用Posix线程吗Java 基于NSRID的JNI互斥,java,cocoa,multithreading,java-native-interface,mutex,Java,Cocoa,Multithreading,Java Native Interface,Mutex,我有一些objective-c代码,它使用NSLock实现某种事务。对象被锁定在“开始事务”上,在锁定到位的情况下进行其他几个调用,然后通过“提交”将其释放。我正在编写一个JNI粘合层来从Java访问这段代码,但是锁在JNI和纯objc代码中的行为不同 我在Java和objc中都有单元测试,用于测试生成锁的代码。objc测试通过,但在Java测试中,[anNSLock tryLock]返回false,即使没有调用[anNSLock lock] 在JNI中有没有一种推荐的互斥方式?我不确定NSLo
有两种选择:第一种是用Java为对象创建一个同步包装器。第二种方法是使用JNI MonitorEnter和MonitorExit方法进行同步。感谢您的建议。我认为下面的页面会很有帮助,因为除了MonitorEnter之外,它还讨论了互斥体等。我认为我的问题有点不清楚(synchronize可能是一个解决方案,但monitor enter/exit可以工作)。我将第一部分改写为:“我有一些objective-c代码,它使用NSLock实现某种事务。对象在“开始事务”上被锁定,在锁定到位的情况下进行其他几个调用,然后通过“提交”将其释放。然后MonitorEnter和MonitorExit应该为您完成这项工作。