gpt4 book ai didi

c - 当发出等待 "join"的 pthread 信号时进程终止

转载 作者:太空宇宙 更新时间:2023-11-04 04:54:50 26 4
gpt4 key购买 nike

我正在尝试实现一个信号处理程序。每个 pthread 都被创建为可连接的,并使用 sigprocmask 在所有信号上被阻塞。

当我使用

从另一个线程向线程发送信号时出现问题
pthread_kill(_threads[threadIndex], SIGHALT);

如果在发送信号时被调用的 pthread 正在等待 pthread_join,则整个过程将立即终止。但是,如果线程没有等待加入,它会按预期忽略信号。知道为什么会发生这种情况以及如何改变它吗?

谢谢!

最佳答案

关于在多线程环境中使用 sigprocmask(),请参阅方法手册页的摘录:

The use of sigprocmask() is unspecified in a multithreaded process; see pthread_sigmask(3).


我对 SIGHALT 有点不确定,但假设它是 SIGSTOP 的同义词,以下内容来自 pthread_kill() 的手册页可能感兴趣:

Signal dispositions are process-wide: if a signal handler is installed, the handler will be invoked in the thread thread, but if the disposition of the signal is "stop", "continue", or "terminate", this action will affect the whole process.

关于c - 当发出等待 "join"的 pthread 信号时进程终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10104323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com