在Linux上中断线程中的系统调用

3
我有一个在循环中运行并以阻塞方式调用accept()的pthread。是否有任何方法可以从另一个线程中断该调用?所有指向发送信号给线程,但显然只能向进程发送信号。
我不能简单地杀死线程,因为那样会让套接字保持打开状态。而且这也不太干净。真的没有办法做到这一点吗?
2个回答

7
您可以使用pthread_kill(3)函数来向线程发送信号。

pthread_kill()函数将信号sig发送给线程,即与调用者在同一进程中的另一个线程。

如果已安装信号处理程序,则处理程序将在线程thread中被调用。

请注意,您不必杀死线程;您可以发送一个信号,使accept失败并返回EINTR

-1
要么使用 select(),要么向进程发送信号(如果您只想中断其中一个线程,则这将是一个问题)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接