1 #!/usr/bin/python
2 #coding=utf-8
3
4 import threading,time
5 lock=threading.Condition()
6 product=0
7 class Make(threading.Thread):
8 def __init__(self,lock):
9 self.lock=lock
10 super(Make,self).__init__()
11
12 def run(self):
13 global product
14 while 1:
15 if self.lock.acquire():
16 if product>=1000:
17 self.lock.wait()
18 else:
19 product+=100
20 print "add 100,product count="+str(product)
21 self.lock.notify()
22 self.lock.release()
23 time.sleep(2)
24
25 class Cost(threading.Thread):
26 def __init__(self,lock):
27 self.lock=lock
28 super(Cost,self).__init__()
29
30 def run(self):
31 global product
32 while 1:
33 if self.lock.acquire():
34 if product<=100:
35 self.lock.wait()
36 else:
37 product-=60
38 print "cost 60,product count="+str(product)
39 self.lock.notify()
40 self.lock.release()
41 time.sleep(1)
42
43 def test():
44 for i in range(5):
45 n=Make(lock)
46 n.start()
47 for i in range(5):
48 m=Cost(lock)
49 m.start()
50 if __name__=="__main__":
51 test()