我在一个线程中运行的linux中有一个阻塞读取。
在程序关闭期间,我想打破这个读取的线程。不幸的是,我无法使用轮询或选择并编写正确的代码,因为从中读取的文件是不实现轮询/选择功能的设备驱动程序。
作为临时解决方案,我目前通过pthread_kill向线程发送SIGUSR1信号并从处理程序调用pthread_exit。这会杀死线程并且到目前为止工作,但我对解决方案不满意,因为信号可能发生在任何地方,而不仅仅是在读取内。
是否有任何机制可以在linux上中断阻塞读取?
顺便说一下 - 我尝试从另一个线程关闭文件句柄,希望这会产生一些IO错误。不幸的是,这个简单的解决方案根本没有用。