2011-11-05 30 views
2

我需要編寫一個執行阻塞I/O操作的JNI接口並且我需要這些方法可以被中斷。例如:如何在Windows中正常中斷阻塞等待?

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」 和 '讀(HANDLE)' 到器物 '的ReadBytes'。

如何中斷阻塞函數'waitForSingleObject'和'read'?

+0

真的是Windows API問題,而不是Java或JNI。 – EJP

回答

0

看起來您需要查看java.nio通道類,以瞭解如何執行非阻塞Java IO,而不是糾結於JNI。

0

要取消阻止呼叫,您可能希望另一個線程發信號通知原線程阻塞的句柄。也許爲此創建另一個JNI調用。