이디엄을 thread_local
과 함께 사용할 수 있습니까?thread_local이 포함 된 C++ Schwarz 카운터
class ThisThread{
JNIEnv* jni_env{nullptr};
public:
JNIEnv* getEnv(){
if (!jni_env){
// Attach thread
java_vm->GetEnv((void**)&jni_env, JNI_VERSION);
java_vm->AttachCurrentThread(&jni_env, NULL);
}
return jni_env;
}
~ThisThread(){
if (!jni_env) return;
// Deattach thread
java_vm->DetachCurrentThread();
}
};
static thread_local ThisThread this_thread;
먼저 구축 할하려면 각 스레드의 마지막 파괴 :
나는이 (자바 JNI 스레드에 대한 도우미)가 필요합니다 (I가thread_local
모든
static
을 대체 가정). 다른 정적 또는 thread_local 객체의 소멸자/생성자에서
this_thread->getEnv()
을 호출 할 수 있습니다.
UPDATE
https://stackoverflow.com/a/30200992 - 여기가 표준 thread_local 소멸자 정적 전에이라고 말한다, 나는 이후로이 일을해야합니다.
ThisThread에 대한 참조가 thread_local이기도합니다. –
@RichardHodges 무엇을 의미합니까? – tower120
초, 데모를 노크합니다 –