gpt4 book ai didi

java - 使用 jni 时将第三方线程附加到 vm

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:17 25 4
gpt4 key购买 nike

我正在编写一个 Java 程序,该程序使用用 c 编写的硬件驱动程序。这个硬件驱动程序启动一个回调线程,你可以注册回调函数,以便在事情发生时调用。如何将此线程附加到 jvm,以便它可以为这些回调调用 Java 方法?我只有从 start_callbacks() 函数返回的线程 ID,以 int 形式返回,但它是调用 pthread_create() 时使用的 pthread_t。

我发现的一种方法是在每个回调函数的开始处使用 pthread_once 并将线程附加到那里。但是没有办法将其分离。我尝试使用 pthread_cleanup_push/pop,但它们需要成对调用,所以没有用。

在我看来,要做到这一点,我唯一的选择是在每次回调调用时附加和分离线程。或者稍微重写驱动程序,我真的不想这样做。

我错过了什么吗?

最佳答案

这正是 JNI 调用 AttachCurrentThread()DetachCurrentThread() 的目的。

关于java - 使用 jni 时将第三方线程附加到 vm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10038106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com