bbq*_*bot 11 c++ java java-native-interface multithreading
我有一个JNI包装器用于从C调用的Java函数...我试图从不同的线程调用一些方法,并且在尝试获取JNIEnv指针的新副本时出错...代码我' m using在下面,并在每种方法中调用:
JNIEnv* GetJniEnvHandle(){
ThreadInfo();
JNIEnv *envLoc;
//if(Thread::CurrentThread->IsBackground || Thread::CurrentThread->IsThreadPoolThread)
jint envRes = vm->GetEnv((void**)&envLoc, JNI_VERSION_1_4);
if(envRes == JNI_OK){
if(ThreadId != Thread::CurrentThread->ManagedThreadId)
jint res = vm->AttachCurrentThread((void**)&envLoc, NULL);
}else{
Log("Error obtaining JNIEnv* handle");
}
return envLoc;
}
Run Code Online (Sandbox Code Playgroud)
JVM已经被实例化,并且当从主/初始线程调用时,此(和其他方法)运行.当我获得envRes的值时,它在子线程中保持-2.
| 归档时间: |
|
| 查看次数: |
10358 次 |
| 最近记录: |