我有一些objective-c代码,它使用NSLock来实现某种事务。对象在"begin transaction“上被锁定,在锁定的情况下进行其他几个调用,然后使用"commit”将其释放。我正在编写一个JNI粘合层,以便从Java访问此代码,但在JNI和纯objc代码中,锁的行为有所不同。
我在Java和objc中都有单元测试,用来测试生成锁的代码。objc测试通过了,但是在Java测试中,即使没有调用anNSLock锁,tryLock也会返回false。
在JNI中有没有推荐的互斥锁方法?我不确定NSLock的底层机制是什么。
谢谢!
发布于 2009-12-15 07:47:14
NSLock的文档说NSLock使用POSIX线程。Java是否使用POSIX线程?
有两种选择:第一种是用Java为对象创建一个同步的包装器。第二种方法是使用JNI、MonitorEnter和MonitorExit方法进行同步。
https://stackoverflow.com/questions/1904280
复制相似问题