mirror of
https://github.com/python/cpython.git
synced 2025-08-02 16:13:13 +00:00
bpo-44645: Check for interrupts on any potentially backwards edge (GH-27216) (GH-27235)
(cherry picked from commit d09c134178
)
Co-authored-by: Mark Shannon <mark@hotpy.org>
This commit is contained in:
parent
bce2847169
commit
37bdd2221c
2 changed files with 31 additions and 1 deletions
|
@ -1604,6 +1604,31 @@ class InterruptMainTests(unittest.TestCase):
|
|||
self.assertRaises(ValueError, _thread.interrupt_main, signal.NSIG)
|
||||
self.assertRaises(ValueError, _thread.interrupt_main, 1000000)
|
||||
|
||||
@threading_helper.reap_threads
|
||||
def test_can_interrupt_tight_loops(self):
|
||||
cont = [True]
|
||||
started = [False]
|
||||
interrupted = [False]
|
||||
|
||||
def worker(started, cont, interrupted):
|
||||
iterations = 100_000_000
|
||||
started[0] = True
|
||||
while cont[0]:
|
||||
if iterations:
|
||||
iterations -= 1
|
||||
else:
|
||||
return
|
||||
pass
|
||||
interrupted[0] = True
|
||||
|
||||
t = threading.Thread(target=worker,args=(started, cont, interrupted))
|
||||
t.start()
|
||||
while not started[0]:
|
||||
pass
|
||||
cont[0] = False
|
||||
t.join()
|
||||
self.assertTrue(interrupted[0])
|
||||
|
||||
|
||||
class AtexitTests(unittest.TestCase):
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue