gpt4 book ai didi

c++ - 什么会导致 SIGUSR1 未被设置了信号处理程序的子线程捕获?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:43 25 4
gpt4 key购买 nike

我遇到了一些奇怪的事情,我想这可能是我不了解 Linux 中线程的复杂性。我使用 signal(SIGUSR1, &callback) 在我的子线程中注册了一个信号处理程序,并且在我的父线程中没有对信号进行特殊处理。每隔一段时间,我的子线程就会引发一个 SIGUSR1。但是,它在退出的主线程中导致未处理的信号错误。如何重现此行为?当我尝试使用测试程序进行重现时,只要在子线程中设置了信号处理程序,它总会被调用。

最佳答案

哦,混合信号和线程。这不是一个好主意。如果必须,将一个线程作为信号处理线程并使用 pthread_sigmask() 屏蔽所有其他线程。但是,如果您使用 SIGUSR1 作为线程间通信的一种形式,则有更好的方法(互斥锁和信号量)。

关于c++ - 什么会导致 SIGUSR1 未被设置了信号处理程序的子线程捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43331242/

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