gpt4 book ai didi

java - 使用 Foundation NSLock 在 JNI 中互斥

转载 作者:行者123 更新时间:2023-12-03 18:06:15 33 4
gpt4 key购买 nike

我有一些 Objective-C 代码,它使用 NSLock 来实现某种事务。该对象在“开始事务”上被锁定,在锁定到位的情况下进行了几次其他调用,然后通过“提交”将其释放。我正在编写一个 JNI 粘合层来从 Java 访问此代码,但锁在 JNI 与纯 objc 代码中的行为不同。

我在 Java 和 objc 中都进行了单元测试,用于执行生成锁的代码。 objc 测试通过,但在 Java 测试中,即使尚未调用 [anNSLock lock],[anNSLock tryLock]也会返回 false。

是否有推荐的方法在 JNI 中使用互斥锁?我不确定 NSLock 的底层机制是什么。

谢谢!

最佳答案

NSLock 的文档说 NSLock 使用 Posix 线程。 Java 使用 Posix 线程吗?

有几个替代方案:第一个是用 Java 为您的对象创建一个同步包装器。第二种是使用JNI MonitorEnter和MonitorExit方法进行同步。

关于java - 使用 Foundation NSLock 在 JNI 中互斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1904280/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com