[Python-Dev] Where to put the interrupt module?

Kevin Jacobs jacobs@penguin.theopalgroup.com
Fri, 13 Jun 2003 06:27:27 -0400 (EDT)


On Fri, 13 Jun 2003, Just van Rossum wrote:
> Kevin Jacobs wrote:
> > > Also, this mechanism can *only* interrupt the main thread.  (That's
> > > even true of the more generalized version you were thinking of.)
> 
> I wonder if that limitation would be liftable? Anybody interested in
> persuing this with me?

Sure!  I've also got several complex applications to use as test cases that
can be adapted to take advantage of threaded interrupts.

> > Ah.. that sounds familiar.  I knew there was a reason I didn't pursue
> > this avenue farther last time I poked through that code.
> 
> Same here. The code that checks for interrupts explicitly does nothing
> when called from a thread that's not the main thread.

That chunk of code is very problematic.  Some platforms/threading libraries
will deliver a SIGINT to all threads, which can abort many system calls that
are not trivially restarted/restartable.  To deliver a KeyboardInterrupt
only to the main thread is problematic, since the other threads may
misinterpret the failure as something else (EOF, fatal error, or worse,
operation succeeded).

I understand the desire to smooth over platform differences in Python, but
I'm not sure that this one (signal delivery policy to threads) is a good
idea.  In fact, I'll try to find a real-world case where this kind of error
occurs.

> Naming: putting this into main sounds just right, but I would suggest to
> call it sys.interrupt() instead of sys.interrupt_main(). That way *if*
> we ever add the possibility to interrupt a non-main thread,
> sys.interrupt() could grow an optional argument specifying the thread.

I Agree.

-Kevin

-- 
--
Kevin Jacobs
The OPAL Group - Enterprise Systems Architect
Voice: (216) 986-0710 x 19         E-mail: jacobs@theopalgroup.com
Fax:   (216) 986-0714              WWW:    http://www.theopalgroup.com