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)
|