当我们使用 AttachCurrentThread (JavaVM *vm, void **p_env, void *thr_args) 方法将 Cpp 线程附加到 Java 本机接口 (JNI) 时,从 Java 虚拟机的角度来看,C++ 线程实际上成为外部线程(JVM)。
将本机 Cpp 线程附加到 JVM 后,如果我在附加线程上执行 pthread_join 是否会导致任何问题?该行为是否记录在任何地方?
在已使用 JNI 的 AttachCurrentThread 方法附加到 JVM 的线程上执行 pthread_join 是否安全
没有什么特别的理由不这么认为。 Java 和 JNI 没有比任何其他代码更多的方法来干扰线程。
还要注意,JNI 规范要求附加到 JVM 的线程在终止之前再次自行分离。在这样的分离之后,尤其没有理由认为线程会表现出任何与 pthread 不一致的行为。