JniHelper 线程安全问题

请教下,cocos2dx 3.x版本 安卓上通过 多线程 调用 JNIHelper:: callstaticxxx是不是会有线程问题?

目前有几个线上崩溃,测试没重现过次数少,调用流程是c++起了线程,内部通过JniHelper调用java方法,崩溃堆栈 JniHelper::deleteLocalRefs/ localRefs[env].clear() , 怀疑是线程操作 unordered_map 冲突,也可能是JNIEnv的线程问题

查了资料JNIEnv不是线程共享的,如果要用还得 AttachCurrentThread

另外在cocos JNIhelper 也看到流程有 AttachCurrentThread

callstaticxxx -> getStaticMethodInfo -> getEnv -> pthread_getspecific -> cacheEnv -> AttachCurrentThread

已参考 JniHelper no long thread safe. · Issue #16581 · cocos2d/cocos2d-x (github.com) 解决

1赞