import threading
import random
import time
gMoney = 1000
gLock = threading.Lock()
gTotalTimes = 10
gTime = 0
class Product(threading.Thread):
def run(self):
global gMoney
global gTime
while True:
money = random.randint(100, 1000)
gLock.acquire()
if gTime >= 10:
gLock.release()
break
gMoney += money
print('%s生产了%d元钱,共计%d元钱' % (threading.current_thread(), money, gMoney))
gTime += 1
gLock.release()
time.sleep(1)
class Consumer(threading.Thread):
def run(self):
global gMoney
while True:
money = random.randint(100, 1000)
gLock.acquire()
if gMoney > money:
gMoney -= money
print('%s消费了%d元钱,余额%d元钱' % (threading.current_thread(), money, gMoney))
else:
if gTime >= gTotalTimes:
gLock.release()
break
print('%s准备消费%d元钱,剩余%d元钱,余额不足' % (threading.current_thread(), money, gMoney))
gLock.release()
time.sleep(1)
def main():
for x in range(5):
t = Product(name='生产者线程%d' % x)
t.start()
for x in range(3):
t = Consumer(name='消费者线程%d' % x)
t.start()
if __name__ == '__main__':
main()
Lock版生产者和消费者模式
最新推荐文章于 2021-10-31 19:03:43 发布