1
我一直在使用Java 7中的NIO2,並且我認爲AsynchronousFileChannel
將有一個transferTo
方法,如同步FileChannel
兄弟。AsynchronousFileChannel是否有等價於transferTo?
我正在執行本地文件和打開的TCP套接字之間的零拷貝傳輸。我試圖簡單地創建一個FileChannel
,並將transferTo
與我的AsynchronousSocketChannel
作爲最後一個參數,但在看到異步套接字版本不是WritableByteChannel
時,Java將不會擁有它。
有了就排除了作爲一個選項,沒有任何人知道解決方法或外部庫,讓我來管字節的AsynchronousSocketChannel
(使用用戶空間沒有緩衝區和隱含的)利用DMA的?
事實上,仍然存在從異步文件通道移動數據 - >異步套接字通道涉及創建一箇中間字節緩衝區,雖然在不同的線程上,但可以用「transferTo」來避免。 transferTo的同步性沒有涉及到它。 [這個討論](http://mail.openjdk.java.net/pipermail/nio-dev/2011-December.txt)表明有普遍的興趣,但沒有具體的時間表。也許我會看看我是否可以自己做點什麼...... – 2012-03-27 23:43:42
@ChrisMowforth還應該注意的是,在Javadoc中被描述爲可能的內核實現並不存在,至少在Windows中,Solars以及我有源代碼訪問的Linux實現。它可以像你自己那樣實現,具有直接字節緩衝區和循環。這也會失去動力。 – EJP 2012-03-28 00:15:10