2012-08-24 41 views
1

我们有一个很大的C++代码库,我正在移植到Android上。我们有先见之明地提取各种平台相关的功能(线程,文件访问等),所以这个过程涉及在NDK中逐步实现Android适当的代码功能。我在相当好地工作,直到我意识到信号量(在我们的核心代码中使用)在NDK中似乎没有实现。在本地代码中使用SDK信号灯

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

是否有一个原因,为什么这可能不适合同步的目的?

感谢

回答

0

可能使用你传递给您的本机代码一个基于Java的实现的最糟糕的结果是,你的信号操作会很慢因为他们必须穿越边界JNI。

是否有任何理由不能使用POSIX信号量?请参阅NDK标题中的semaphore.h

+0

谢谢kelnos。我的错误 - 我没有发现包含文件夹中的** semaphore.h **的存在。 –

+0

@DaveFussell,您是否包含usr/include或usr/include/asm中的semaphore.h? –

0

有坏消息的人。信号量没有在android版本的pthread上实现google source

至于我的羊群(2)是一个答案。但是,当您尝试锁定来自不同用户的相同文件时,存在潜在的问题。