【发布时间】:2010-11-02 08:48:26
【问题描述】:
我有一个通过 NDK 访问的 C 库。有些操作很耗时,因此 UI 线程会冻结它们。我现在的常见做法是像这样使用 Runnable:
myFixedThreadPool.execute(new Runnable()
{
public void run()
{
NativeClass.callToNDKLibrary();
};
});
或类似的线程:
Thread t = new Thread()
{
public void run()
{
NativeClass.callToNDKLibrary();
}
};
t.start();
但问题是 C 库不是线程安全的:当我这样包装它时它开始崩溃。所以问题是如何从 UI 线程中分离仍然强制 NDK 调用一次运行一个。同步的一些技巧可能会有所帮助吗?我还想提一下,这个库是我的应用程序的核心底层,而不仅仅是一个辅助函数。所以它几乎是从我的代码的每个部分调用的。并且只有少数函数会消耗时间,大多数可以快速将它们保留在主线程中。
【问题讨论】:
标签: android multithreading android-ndk