如何在Windows中优雅地中断阻塞等待?

时间:2011-11-05 18:19:29

标签: java c++ windows java-native-interface

我需要编写一个执行阻塞I / O操作的JNI接口而且我需要这些方法可以被中断。例如:

interface IO {
  native void waitForEvents() throws InterruptedException, IOException;
  native int readBytes(byte[] data, int offset, int len) throws InterruptedException, IOException;
 }

在Win32上,我使用windows API'waitForSingleObject(HADLE)'来实现“waitForEvents”,并使用'read(HANDLE)'来实现'readBytes'。

如何中断阻塞函数'waitForSingleObject'和'read'?

2 个答案:

答案 0 :(得分:0)

看起来你需要查看java.nio通道类来学习如何进行非阻塞Java IO,而不是纠结于JNI。

答案 1 :(得分:0)

要取消阻止调用,您可能希望另一个线程发信号通知原始线程阻塞的句柄。也许为此目的创建另一个JNI呼叫。