Why print operation within signal handler may change deadlock situation?
问题 I got simple program as below: import threading import time import signal WITH_DEADLOCK = 0 lock = threading.Lock() def interruptHandler(signo, frame): print str(frame), 'received', signo lock.acquire() try: time.sleep(3) finally: if WITH_DEADLOCK: print str(frame), 'release' lock.release() signal.signal(signal.SIGINT, interruptHandler) for x in xrange(60): print time.strftime("%H:%M:%S"), 'main thread is working' time.sleep(1) So, if you start that program and even Ctrl+C is pressed twice