这个问题似乎是半设计,半实现.看起来你最关心的是为jUSB等Java USB服务找到一些方法来为系统提供热插拔事件,允许你通过控制反转调用一个事件,而不是运行一个热情地迭代地轮询系统的线程.背景.
您寻求的支持在2005年作为JSR-80实施,并且在所有超越其商业支持的伟大项目中仍然存在,就像javax-usb在SourceForge上一样.请注意,在他们的玩具示例(in javax-usb-example/src/ShowTopology.java)中,他们的首选模型仍然是基于轮询的.
然而,并非所有人都失去了!在属性文件中javax.usb,我们发现:
#如果应该使用轮询而不是等待热插拔通知.
#某些内核版本有一个错误,并且在唤醒等待设备文件的线程后几秒钟才更新设备节点.如果您没有在中等负载系统上获得热插拔事件,请使用轮询.
#注意,由于新的(buggy?)内核行为破坏了javax.usb,因此默认为true!
#如果您知道内核没有损坏,可以将其设置为false.
#com.ibm.jusb.os.linux.LinuxUsbServices.topologyUpdateUsePolling = true
在中javax-usb/src/javax/usb/event/UsbServicesListener.java,我们看到了一个用于设置USB事件监听器的模型,您可以在设备连接或从系统分离时继续使用.但是,外部没有提供关于这是否有效的文档,并且文档本身似乎大部分都是8年.
因此,合理的假设虽然支持理论上存在,但它是滞后的,陈旧的,并且迫切需要社区更新.这是SO上这个优秀社区可以帮助修复的事情,所以我将通过直接指向项目本身来开始关闭.
目前,在存在增强的硬件或热插拔支持之前,轮询仍然是最佳解决方案.
| 归档时间: |
|
| 查看次数: |
2050 次 |
| 最近记录: |