GLThread和HeapWorker之间的并发问题

时间:2012-09-13 09:42:14

标签: android opengl-es garbage-collection android-ndk swig

我的问题涉及在Android操作系统中使用通过Swig暴露给Java的本机NDK库。

本机库是一个OpenGLES引擎。在应用程序的生命周期中,java代码可以创建本机类的实例,我们将使用它来提供引擎。困扰我的是这些类可能会在Java端收集垃圾。在这种情况下,它是另一个线程(HeapWorker)而不是主引擎线程(GLThread)将通过swig生成的finalize方法删除对象。这会导致本机引擎中出现一些并发问题,其中HeapWorker线程在删除对象时可以使用它们。

是否可以:

1 - 以某种方式自定义垃圾收集器,以便与GLThread同步?

2 - 运行终结者GLThread?

3 - 在垃圾收集期间锁定GLThread?

感谢您的帮助。

0 个答案:

没有答案