'''
Lock版的生产者和消费者模式
'''
import threading
import random
import time
gMoney = 1000 # 原始金额
gLoad = threading.Lock()
gTime = 0 # 生产次数
class Producer(threading.Thread):
def run(self):
global gMoney
global gTime
while True:
gLoad.acquire()
if gTime < 20:
gTime += 1
money = random.randint(50,500)
gMoney += money
print("生产线程%s生成了%d元,剩余%d元"%(threading.current_thread(),money,gMoney))
else:
gLoad.release()
break
gLoad.release()
time.sleep(1)
class Consumer(threading.Thread):
def run(self):
global gMoney
while True:
gLoad.acquire()
money = random.randint(50,500)
if money > gMoney:
print("%s线程结束,需要消费%d,本金为%d"%(threading.current_thread(), money, gMoney))
gLoad.release()
break
else:
gMoney -= money
print("消费线程%s消费了%d元,剩余%d元" % (threading.current_thread(), money, gMoney))
gLoad.release()
time.sleep(1)
def main():
for x in range(5):
t = Producer(name="生产者线程%s"%x)
t.start()
for x in range(3):
t = Consumer(name="消费者线程%s"%x)
t.start()
if __name__ == '__main__':
main()