|
|
- import threading
-
- counterA = 0
- counterB = 0
-
- mutexA = threading.Lock()
- mutexB = threading.Lock()
-
- class MyThread(threading.Thread):
- def __init__(self):
- threading.Thread.__init__(self)
-
- def run(self):
- self.fun1()
- self.fun2()
-
- def fun1(self):
- global mutexA, mutexB
- if mutexA.acquire():
- print "I am %s , get res: %s" %(self.name, "ResA")
-
- if mutexB.acquire():
- print "I am %s , get res: %s" %(self.name, "ResB")
- mutexB.release()
-
- mutexA.release()
-
- def fun2(self):
- global mutexA, mutexB
- if mutexB.acquire():
- print "I am %s , get res: %s" %(self.name, "ResB")
-
- if mutexA.acquire():
- print "I am %s , get res: %s" %(self.name, "ResA")
- mutexA.release()
-
- mutexB.release()
-
- if __name__ == "__main__":
- for i in range(0, 100):
- my_thread = MyThread()
- my_thread.start()
|