JNI -multi threads

У меня есть оболочка JNI для функций Java, которые вызываются из C... Я пытаюсь вызвать некоторые методы из разных потоков и получаю сообщение об ошибке при попытке получить новую копию указателя JNIEnv... код, который я использую, приведен ниже и вызывается в каждом методе :

        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;
    }

. JVM уже создана, и этот (и другие методы )запускаются при вызове из основной/начальный поток. Когда я получаю значение для envRes, оно содержит -2 в подпотоке -.

11
задан scravy 1 February 2013 в 19:47
поделиться