- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这里找到了 https://stackoverflow.com/a/12901159/6655884一个函数调用,它使用 AttachCurrentThread
附加线程,执行调用,然后使用 DetachCurrentThread
将其分离。
我想知道这个过程是否昂贵。我有一个 C++ 函数
void sendEvent(Event event) {
//call java function here
}
这将由多个 C++ 线程调用以将事件发送到 Java 端,因此我不能简单地附加一个线程并且从不分离它,因为许多不同的线程将调用 sendEvent
。所以我想知道在每次 sendEvent
调用时执行 AttachCurrentThread
、调用 Java 然后 DetachCurrentThread
是否代价高昂。如果是,我应该怎么做?
最佳答案
虽然您可以将调用线程附加到每个 JNI 调用基础上,但您真的不应该,除非您别无选择。 native 线程必须先将自身附加到 JVM,然后才能进行 JNI 调用。为了避免不必要的开销,线程确实应该尽快附加自身(至少在第一次 JNI 调用之前),并保持附加状态直到它不再需要进行任何进一步的 JNI 调用。
关于java - 在 JNI 上调用 AttachCurrentThread 是否很容易?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58810143/
如果调用以下函数,应用程序会崩溃: void on_log(JavaVM* vm, int level, const char *data) { printOnAndroid(level, dat
我已经为库创建了一个带有 swig 的 JNI 包装器。我使用 swig Controller 回调 JVM。其中一些回调发生在 native 库中创建的线程上。非 JVM 线程上的第一个回调失败并出
我目前正在将 JNI 功能添加到遗留的 Delphi 应用程序中。在单线程环境中一切正常,但一旦我进入多线程环境,事情就开始变得毛茸茸了。 我的问题是调用 JavaVM^.AttachCurrentT
我在这里找到了 https://stackoverflow.com/a/12901159/6655884一个函数调用,它使用 AttachCurrentThread 附加线程,执行调用,然后使用 De
希望你一切顺利。 我在 C 中有一个 JNI 实现,其中一个 C 函数附加到当前 JVM 线程并回调一个 Java 方法,这实际上在调用 attachCurrentThread() 函数时使 JVM
我一直在阅读有关 JNI 的内容,但似乎无法弄清楚如果线程启动 -> 调用 AttachCurrentThread() -> 进行一些 JNI 调用 -> 线程退出会发生什么。 理想情况下,我们应该在
我正在使用 C 中的 NativeActivity。我的目标是获取对 JNIEnv 的引用,以便我可以进行进一步的 Android 调用。 根据我在 Android 文档和 Stackoverflow
我想知道从 JNI 函数 AttachCurrentThread() 获得的 JNIEnv * 的生命周期。考虑以下检索 JNIEnv 指针的函数。 JNIEnv * RetrieveJniEnvPt
我在基于 django 的站点中使用 pylucene,我想知道是否有人知道启动 jvm 和附加线程的最佳位置。我不想每次有人加载页面时都必须启动一个新的 jvm,但是当我在搜索时附加线程时,我偶尔会
我是一名优秀的程序员,十分优秀!