我正在编写一个 Java 程序,它使用用 c 编写的硬件驱动程序。此硬件驱动程序启动一个回调线程,您可以注册回调函数以在发生事情时调用。如何将此线程附加到 jvm,以便它可以为这些回调调用 Java 方法?我只有从 start_callbacks() 函数返回的线程 ID,以 int 形式返回,但它是调用 pthread_create() 时使用的 pthread_t。
我发现的一种方法是在每个回调函数的开头使用 pthread_once 并将线程附加到那里。但是没有办法将其分离。我尝试使用 pthread_cleanup_push/pop,但它们需要成对调用,这样就不起作用了。
在我看来,我唯一能做到这一点的选择是在每次回调调用时附加和分离线程。或者稍微重写驱动程序,我真的不想这样做。
有什么我错过的吗?