import threading
num = 0
# 任务1:循环1000000次,每循环1次全局变量加1
# 创建互斥锁
lock = threading.Lock()
def sum1():
# 上锁
lock.acquire()
global num
for i in range(1000000):
num += 1
print('sum1= ',num)
# 释放锁
lock.release()
# 任务2:循环1000000次,每循环1次全局变量加1
def sum2():
# 上锁
lock.acquire()
global num
for i in range(1000000):
num += 1
print('sum2= ',num)
# 释放锁
lock.release()
# 创建子线程
# 创建子线程
sum1_thread = threading.Thread(target=sum1)
sum2_thread = threading.Thread(target=sum2)
# 启动子线程
sum1_thread.start()
sum2_thread.start()
# 互斥锁: 保证同一时刻只有一个线程去执行代码,其它线程没有抢到锁会等待
# 提示:加上互斥锁,哪个线程抢到锁我们决定不了,因为线程执行是无序的
# 注意点: 线程同步和加上互斥锁把多任务瞬间该成单任务,性能会下降
互斥锁的使用
最新推荐文章于 2025-03-21 15:08:00 发布