【发布时间】:2013-05-19 16:53:40
【问题描述】:
在用于串行通信的多线程 Linux 程序中,是否可以(以及最好的方法)终止来自另一个线程的阻塞 read() 调用?
我希望尽可能保持反应性,并避免在重复轮询时使用任何超时。
这个问题的背景是我正在尝试使用 JNI 为 Linux 创建一个 Scala 串行通信库。我试图使本机端尽可能简单,提供 read() 和 close() 函数等。在 Scala 方面,一个线程会调用 read() 并阻塞,直到来自串行端口的数据可用。但是,可以通过其他方式关闭串口,从而调用 close()。现在,为了释放被阻塞的线程,我需要取消系统读取调用。
【问题讨论】:
标签: linux multithreading io java-native-interface blocking