gpt4 book ai didi

c - 为什么 sigwait() 是 MT 安全的而 sigsuspend() 不是?

转载 作者:IT王子 更新时间:2023-10-29 00:32:00 28 4
gpt4 key购买 nike

我正在寻找一个多线程应用程序,其中一个线程在继续之前等待另一个线程发出信号。根据here , sigsuspend 由于竞争条件不是 MT 安全的。根据here , sigwait 应该在这些情况下使用。我试图理解为什么。

根据手册页描述(sigwaitsigsuspend),似乎...

sigsuspend (const sigset_t *mask) 实际上更改了进程的 信号掩码,这会影响所有线程。

sigwait (const sigset_t *set, int *sig) 只是等待 set 中指定的信号之一,没有改变线程的 (或进程的)信号掩码。

这个理解对吗?如果是这样,sigwait 如何在不更改信号掩码的情况下进行阻塞?

最佳答案

实际上 sigwait 更改了掩码但随后又将其恢复,请参见(UNIX 环境中的高级编程):Signals and Threads .

还有这个:Oracle Multithreaded Programming Guide

关于c - 为什么 sigwait() 是 MT 安全的而 sigsuspend() 不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33639135/

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