멀티쓰레드 환경에서 JNI사용시...
글쓴이: mg2000 / 작성시간: 금, 2010/08/27 - 4:04오후
안녕하세요. 제가 C로 만든 라이브러리를 JNI를 통해 자바에서 사용하려고 하는데요.
일반 함수는 JNI함수를 Wrapping해서 사용하면 문제가 없지만...
C에서 Thread를 생성한 후 그 쓰레드에서 도는 함수를 이용하려니 문제네요.
일단 JNIEnv *를 얻어야 뭔가 할 수 있을텐데...
그래서 JavaVM을 JNI_OnLoad()에서 받아서 전역 변수에 저장했고요.
Thread함수에서
JNIEnv *env; jint ret = jvm->AttatchCurrentThread((void **)&env, NULL);
를 이용해서 JNIEnv *를 얻으려고 하는데, 이 함수를 실행하면 -1이 나옵니다.
왜 -1이 나오는지에 대한 설명이 있으면 좋을텐데 그런것도 없고... ㅠ.ㅠ
AttachCurrentThread를 사용 조건이나 방법이 따로 있는건지 궁금하네요.
Forums:
댓글 달기