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