Eryk Sun <eryk...@gmail.com> added the comment:

> That sounds like a micro-optimization which is not worth it.

In the back of my mind I was also thinking to generalize the behavior at 
runtime whenever a signal is tripped by a non-Python thread (e.g. a thread 
created by an extension module or ctypes), instead of special-casing Windows. 

To examine this, I created a C library in Linux that defines a test() function 
that creates two threads via pthread_create(). The first thread sleeps for 10 
seconds, and the second thread sleeps for 5 seconds and then calls 
pthread_kill() to send a SIGINT to the first thread. In 3.8, calling the test() 
function via ctypes followed by executing an infinite loop will interrupt the 
loop with a KeyboardInterrupt as soon as the second thread sends SIGINT. But in 
3.10, the loop never gets interrupted because the C signal handler isn't called 
on the main thread, so eval_breaker never gets set.

----------
keywords: +patch -3.9regression
priority:  -> release blocker
resolution: fixed -> 
stage: resolved -> 
status: closed -> open

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue42296>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to