在本机代码中使用SDK信号量



我们有一个很大的c++代码库,我正在将其移植到Android上。我们有先见之明,可以抽象出各种依赖于平台的功能(线程、文件访问等),因此该过程涉及在NDK 中逐步实现Android适当的代码功能

我过得相当好,直到我意识到信号量(在我们的核心代码中使用)似乎在NDK中没有实现。

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

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

感谢

有个坏消息,伙计们。Semaphore没有在pthread谷歌源的android版本上实现

对我来说,羊群(2)是一个答案。但当您试图从不同的用户锁定同一个文件时,会出现潜在的问题。

使用传递给本机代码的基于Java的实现可能会导致信号量操作非常慢,因为它们必须跨越JNI边界。

你为什么不能使用POSIX信号量?请参阅NDK标题中的semaphore.h

最新更新