我想异步读取/写入原始设备(这只是linux中的一个文件),我一直在使用java.nio.channels.AsynchronousFileChannel
。
但它是'假的异步',因为AsynchronousFileChannel使用线程池来执行读/写任务。它实际上是调用操作系统提供的同步读/写接口。
我真正想要的是一个真正的异步实现,在linux中是io_submit
。
但我无法在jdk或guava或apache等任何其他存储库中找到它。
所以我的问题是:
在java中,是否存在基于本地io_submit
接口的异步文件访问器的现有实现?
如果没有,我为什么不能看到其他需要它的人呢?
答案 0 :(得分:1)
在Java中,是否存在基于本机io_submit接口的异步文件访问器的现有实现
在撰写本文时(2019年)不在默认的Java库中。我怀疑在默认库中实现id
Java包装程序的热情如何,因为:
io_submit()
/ KAIO很古怪。 Linux的KAIO充满约束,例如仅在执行直接I / O时才真正是异步的(甚至there are very elaborate rules which will turn submission synchronous if broken也超出了调用者的控制范围)libaio
库本身会存在,因此您必须将其与Java捆绑在一起或以其他方式重新实现。如果没有,为什么我看不到其他需要它的人?
急需此服务的人重新创建了包装器(例如,参见https://github.com/zrlio/jaio)。但是,支持KAIO只能是Linux的事情,因此不是那么可移植的(这与Java的主要思想有所抵触)。