如何在Java / C应用程序中实现Lock

时间:2013-03-27 12:47:34

标签: java concurrency native

我的Android应用程序存在并发问题。一个问题的基础是Java代码在加载C代码之前试图通过JNI接口调用C函数和设置值。我有MainActivity.java调用C函数和NativeLib.java加载C共享库。 有没有任何优雅的方法来解决这个并发问题,例如。通过在加载完成时从C某些Java字段设置为true并锁定MainActivity方法直到该值为真?或者也许还有其他更好的解决方案?

Basic principle of engine

这是引擎的基本图表。在GLThread中,在循环中,方法guardedRun()调用onDrawFrame(),它将JNI调用发送到C以呈现帧,然后,当guardedRun()接收到新的GL帧时,它交换帧缓冲区。

问题在于方法onMessageReceived()。现在,我想在启动时将Activity连接到另一台设备,当它连接时,我想接收将从Java发送到C的消息。但问题是C尚未加载且Java已经启动并已连接。那么,C如何对Java说:“等到我加载”?

1 个答案:

答案 0 :(得分:1)

显而易见的答案是:

确保在调用C函数之前加载C代码。

在您提供问题的详细信息之前,我们无法在答案中提供更多详细信息。