在用于串行通信的多线程 Linux 程序中,是否可以(以及最好的方法)终止来自另一个线程的阻塞 read() 调用?
我希望尽可能保持一切反应,并避免使用任何超时重复轮询。
这个问题的背景是我正在尝试使用 JNI 为 Linux 创建一个 Scala 串行通信库。我试图使本机端尽可能简单,提供 read() 和 close() 函数等。在 Scala 方面,一个线程会调用 read() 并阻塞,直到来自串行端口的数据可用。但是,可以通过其他方式关闭串口,从而调用 close()。现在,要释放阻塞的线程,我需要以某种方式取消系统读取调用。