https://blog.csdn.net/weixin_45912307/article/details/124161428
1. 线程全局变量数据错误的解决办法:
- 线程同步: 保证同一时刻只能有一个线程去操作全局变量 ;同步: 就是协同步调,按预定的先后次序进行运行
2. 线程同步的方式:
- 线程等待(join)
- 互斥锁:https://blog.csdn.net/weixin_45912307/article/details/115601523
- 线程等待和互斥锁都是把多任务改成单任务执行,保证数据的安全和准确性,执行性能下减(同一时刻只能有一个线程去执行任务)
3. 线程等待join
import threading
g_num = 0
def buy_tick01():
global g_num
for i in range(1000000):
g_num +=1
print("buy_tick01:%s" % g_num)
def buy_tick02():
global g_num
for i in range(1000000):
g_num += 1
print("buy_tick02:%s" % g_num)
if __name__ == '__main__':
t1 = threading.Thread(target=buy_tick01,name='tick01')
t2 = threading.Thread(target=buy_tick02,name='tick02')
t1.start()
# 主线程等待第一个线程执行完成以后代码再继续执行,让其执行第二个线程
# 线程同步: 一个任务执行完成以后另外一个任务才能执行,同一个时刻只有一个任务在执行
t1.join()
t2.start()
输出
buy_tick01:1000000
buy_tick02:2000000