【问题标题】:Cancelling a Blocked Pthread取消阻塞的 Pthread
【发布时间】:2010-10-22 16:26:37
【问题描述】:

如果线程在sem_wait() 上被阻塞,我如何使线程响应pthread_cancel()

【问题讨论】:

    标签: c pthreads semaphore


    【解决方案1】:

    您可以为 SIGUSR1 设置一个信号处理程序,然后为将要阻塞的线程从另一个线程调用 pthread_cancel(tid)pthread_kill(tid, SIGUSR1)。一旦sem_wait()被信号中断,线程将被取消。

    【讨论】:

    • 请注意,您实际上并没有为每个线程设置信号处理程序,而是为每个进程设置它们。不过,您可以为每个线程设置信号掩码,以控制发送到进程的异步信号的传递。我主要指出这一点,因为在线程退出时注销处理程序是一个常见错误,但这会删除每个线程的处理程序。
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2011-05-02
    • 2011-05-25
    • 1970-01-01
    相关资源
    最近更新 更多