【问题标题】:Interrupting syscalls in threads on linux在Linux上的线程中中断系统调用
【发布时间】:2011-10-18 03:05:16
【问题描述】:

我有一个循环运行的 pthread,以阻塞方式调用 accept()。有什么办法可以中断来自另一个线程的调用?一切都指向向线程发送信号,但显然您只能向进程发送信号。

我不能直接杀死线程,因为它会使套接字保持打开状态。无论如何,这不是很干净。真的没有办法吗?

【问题讨论】:

    标签: linux pthreads signals interrupt system-calls


    【解决方案1】:

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

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

    如果安装了信号处理程序,该处理程序将在 线程线程

    注意,你不必杀死线程;您可以发送一个信号,使acceptEINTR 失败。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-06-30
        • 2012-04-23
        • 1970-01-01
        • 2011-08-27
        • 2011-09-01
        • 2023-04-11
        • 2015-02-06
        • 2021-09-19
        • 2015-01-09
        相关资源
        最近更新 更多