Python 多线程售票系统:使用 RLock 机制实现同步
import threading import time import random
def sellTicket(window, buy): global n lock.acquire() # 加锁 if n >= buy: n = n - buy time.sleep(1) print(f'{window} 售出 {buy} 张票,剩余{n}张票\n') else: print('余票不足,购票失败\n') lock.release() # 解锁
n = 100 lock = threading.Lock() # 创建锁对象 print(f'现有票数{n}张') sellThreads = [] for i in range(5): buy = random.randint(1, 10) # 随机售出的票数 t = threading.Thread(target=sellTicket, args=('窗口' + str(i), buy)) sellThreads.append(t) for t in sellThreads: t.start() # 启动各窗口购票线程 for t in sellThreads: t.join() # 等待线程结束
print('售票结束')
原文地址: https://www.cveoy.top/t/topic/oDw6 著作权归作者所有。请勿转载和采集!