Ammar Askar <am...@ammaraskar.com> added the comment:
> For me, the most surprising part is Handlers[signum].tripped which is > declared as volatile *and* an atomic variable. I think it's just following this part of the C spec (Some background in bpo-12060): > or refers to any object with static storage duration other than by assigning > a value to a static storage duration variable of type volatile sig_atomic_t. > Furthermore, if such a call fails, the value of errno is unspecified. https://pubs.opengroup.org/onlinepubs/007904875/functions/sigaction.html / https://wiki.sei.cmu.edu/confluence/display/c/SIG31-C.+Do+not+access+shared+objects+in+signal+handlers > I'm not sure if Handlers[signum].func must be volatile neither. I think your assessment here is right considering it's never used in the signal handler itself. > Also, wakeup.fd is declared as sig_atomic_t on Unix. Could we use an atomic > variable instead, or is it important to use "sig_atomic_t"? Again looking at the https://wiki.sei.cmu.edu/confluence/display/c/SIG31-C.+Do+not+access+shared+objects+in+signal+handlers recommendation it seems like using an atomic variable is fine but only if it's lock-free. ---------- nosy: +ammar2 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue42767> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com