【发布时间】:2015-10-29 15:57:17
【问题描述】:
我正在为生产者-消费者问题编写程序。
生产者生产数据并将数据推送到boost::spsc_queue,消费者对其进行处理。
在消费者线程中,我使用JNI 从我用 c++ 编写的代码中调用一些 java 函数。
我是 initializing and creating JVM 在消费者线程调用的函数中,然后事件循环开始,它从 boost::spsc_queue 弹出数据并处理它。
现在,我想捕捉SIGINT 信号,所以我写了一个signal_handler 并将它注册到我的main() 函数中。但它不起作用。
如果我注释掉所有 JNI 内容并在消费者线程调用的函数中启动循环 while(1){},那么它正在捕获 SIGINT 并按预期工作。
我还需要处理 JVM 或 JNI 的东西吗? 在主线程中初始化和创建 JVM 后,我应该尝试同样的事情吗?有意义吗?
【问题讨论】:
标签: java c++ multithreading boost jvm