Mega Code Archive

 
Categories / Python Tutorial / Thread
 

Deadlock illustration

import threading, time a = 5 alock = threading.Lock() b = 5 block = threading.Lock() def thread1calc():     print "Thread1 acquiring lock a"     alock.acquire()     time.sleep(5)     print "Thread1 acquiring lock b"     block.acquire()     time.sleep(5)     a += 5     b += 5     print "Thread1 releasing both locks"     block.release()     alock.release() def thread2calc():     print "Thread2 acquiring lock b"     block.acquire()     time.sleep(5)     print "Thread2 acquiring lock a"     alock.acquire()     time.sleep(5)     a += 10     b += 10     print "Thread2 releasing both locks"     block.release()     alock.release() t = threading.Thread(target = thread1calc) t.setDaemon(1) t.start() t = threading.Thread(target = thread2calc) t.setDaemon(2) t.start() while 1:     # Sleep forever     time.sleep(300)