在linux上放弃阻塞读取

我有一个阻塞读取在Linux中运行在一个线程。

在程序closures期间,我想把这个线程从这个读取中分离出来。 不幸的是,我不能使用轮询或者select和编写正确的代码,因为从中读取的文件是一个没有实现轮询/selectfunction的设备驱动程序。

作为一个临时解决scheme,我现在通过pthread_kill发送SIGUSR1信号给线程,并从处理程序中调用pthread_exit。 这杀死了线程和工作到目前为止,但我不满意的解决scheme,因为信号可能发生在任何地方,不仅在读取。

有没有什么机制来中断Linux上的阻塞读取?

顺便说一句 – 我试图从另一个线程closures文件句柄,希望这会给某种IO错误。 不幸的是,这个简单的解决scheme根本没有奏效

Solutions Collecting From Web of "在linux上放弃阻塞读取"