Martin v. Löwis wrote: > Greg Ewing schrieb: > >>>Please >>>try to come up with a patch (e.g. by putting a while(is_tripped) loop >>>around the for loop). >> >>That isn't going to fix it. > > Why not?
Correct me if I'm wrong, but what I got from the OP was that the current method does if (is_tripped) { for each signal { if the signal has occurred, call its handler } is_tripped = 0; } and the problem is that any setting of is_tripped that occurs in the midst of calling the handlers gets wiped out at the end. Changing this to while (is_tripped) { for each signal { if the signal has occurred, call its handler } is_tripped = 0; } doesn't solve that, because is_tripped still gets set to 0 before it's tested again. > Also, why does it need to clear is_tripped atomically? Thinking about it more, probably it doesn't. What's important is to clear it *before* testing whether any handlers need to be called, i.e. if (is_tripped) { is_tripped = 0; for each signal { if the signal has occurred, call its handler } } If you really care, you can make that a while instead of an if so that you don't have to wait until the next CheckSignals. But if the signal had arrived a few microseconds later you'd have to do that anyway, so I don't see it as a big deal. -- Greg _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com