我有一个在循环中运行的pthread,以阻塞方式调用accept()
。有没有办法从另一个线程中断该调用?一切都指向向线程发送信号,但显然你只能发送进程信号。
我不能只是杀死线程,因为它会使套接字保持打开状态。而且反正这不是很干净。有没有办法做到这一点?
答案 0 :(得分:3)
您可以使用pthread_kill(3)
发送信号。
pthread_kill()
函数将信号sig发送给另一个线程 与调用者处于同一进程中的线程。如果安装了信号处理程序,则将在中调用处理程序 线程线程。
注意,你不必杀死线程;您可以使用accept
发送仅使EINTR
失败的信号。
答案 1 :(得分:-1)
使用select()
,或将信号发送到进程(如果您只想中断其中一个线程,这将是一个问题。)