【发布时间】:2011-08-04 08:05:42
【问题描述】:
我在带有 SDK 2.2 的 Android 2.3.3 中有一个 AsyncTask。
在任务/类中,我正在使用带有 NDK 的 C 库。
我没有在 Java 中使用 while(condition) 循环,而是在 C 中使用此循环以避免在每次循环迭代期间通过 JNI 进行昂贵的调用。
如果我在 Java 中有 while(condition) 循环,我会在每次循环迭代结束时调用 Thread.yield() 以允许线程暂停。
C 中是否有可能获得相同的行为?
我在 C 中 while(condition) 循环的末尾使用 usleep(10) 进行了尝试,但没有得到预期的行为。
有什么建议吗?
【问题讨论】:
-
您可能希望将 C 标签添加到您的问题中,以便订阅该标签的人看到它。
-
你是对的。谢谢。
-
我不了解 android,但请注意,在某些平台上“Thread.yield()”、“sched_yield()”、“pthread_yield()”、“Sleep(0)” ,或其他什么,实际上是一个 noop。
标签: android c++ c multithreading android-ndk