1

我们有一个大型的 c++ 代码库,我正在将其移植到 Android 上。我们有先见之明地抽象出各种平台相关的特性(线程、文件访问等),因此这个过程涉及在 NDK 中逐步实现适合 Android 的代码功能

在我意识到信号量(在我们的核心代码中使用)似乎没有在 NDK 中实现之前,我进展得相当顺利。

我想知道在这种(可能还有其他)情况下是否有可能在 SDK 中实现所需的功能(如果存在),例如“Java”信号量并通过本机的 JNI 接口将其传递给本机代码通过适当的回调对其进行操作的代码。

出于同步目的,这可能是不可取的吗?

谢谢

4

2 回答 2

1

有一个坏消息,伙计们。信号量未在 pthread google 源的 android 版本上实现

对我来说,flock(2) 是一个答案。但是,如果您试图从不同的用户锁定相同的文件,则存在潜在的问题。

于 2013-12-20T13:33:24.597 回答
0

使用传递给本机代码的基于 Java 的实现可能最糟糕的后果是信号量操作将非常慢,因为它们必须跨越 JNI 边界。

有什么理由不能使用 POSIX 信号量吗?semaphore.h从 NDK 的标头中查看。

于 2012-08-26T22:33:59.837 回答