gpt4 book ai didi

c - 为什么我必须在等待特定信号之前设置 pthread_sigmask

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:46 25 4
gpt4 key购买 nike

在其中一个线程中,我必须等待特定的实时信号,但我不明白为什么首先我必须在等待特定信号之前为线程设置整个 sigmask。

    sigset_t signals;
siginfo_t info;

sigfillset(&signals);
sigdelset(&signals, SIGRTMIN+1);

//why do we need this?
pthread_sigmask(SIG_SETMASK, &signals, NULL);

sigemptyset(&signals);
sigaddset(&signals, SIGRTMIN+1);
sigwaitinfo(&signals, &info);
printf("This is thread %d %d\n", pthread_self(), info.si_value.sival_int);


最佳答案

通过查看代码,开发人员似乎希望暂停线程的执行,直到 SIGRTMIN+1 已成为线程挂起 ( sigwaitinfo(2) )。同时他不希望线程执行被其他信号干扰(即线程不应该对除 SIGRTMIN+1 之外的任何信号使用react)所以他使用以下语句屏蔽了其他信号:

//why do we need this?
pthread_sigmask(SIG_SETMASK, &signals, NULL);

这里要注意的一点是,即使使用上述语句屏蔽了除 SIGRTMIN+1 之外的所有信号,线程执行总是容易出现 SIGSTOPSIGKILL。

关于c - 为什么我必须在等待特定信号之前设置 pthread_sigmask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55663635/

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