我在 pselect 的手册页中看到了以下段落。
需要 pselect() 的原因是,如果要等待信号或文件描述符准备就绪,则需要进行原子测试以防止竞争条件。(假设信号处理程序设置了一个全局标志并返回。然后,如果信号在测试之后但在调用之前到达,则对该全局标志的测试随后调用 select() 可能会无限期挂起。相比之下,pselect () 允许一个人首先阻止信号,处理进来的信号,然后使用所需的 sigmask 调用 pselect(),避免竞争。)
我不明白段落中描述的竞争条件是如何发生的。你能帮忙弄出来吗?谢谢。