【发布时间】:2012-04-06 01:20:39
【问题描述】:
我正在编写一个使用 c 语言编写的硬件驱动程序的 Java 程序。该硬件驱动程序启动一个回调线程,您可以注册回调函数以在发生事情时调用。如何将此线程附加到 jvm,以便它可以为这些回调调用 Java 方法?我只有从 start_callbacks() 函数返回的线程 id,以 int 形式返回,但它是调用 pthread_create() 时使用的 pthread_t。
我发现的一种方法是在每个回调函数的开头使用 pthread_once 并将线程附加到那里。但是,没有办法将其分离。我尝试使用 pthread_cleanup_push/pop,但它们需要成对调用,这样不起作用。
在我看来,我唯一的选择是在每次回调调用时附加和分离线程。或者重写驱动程序,我真的不想这样做。
我错过了什么吗?
【问题讨论】:
-
这可能没什么用,但是您是否考虑过用 C 实现该程序,并使用 System.exec 或其他东西将其连接到 Java?您当前的方法对我来说似乎在技术上存在风险。
标签: java c java-native-interface pthreads