线程 3.多线程共享全局变量
2021/12/15 6:17:12
本文主要是介绍线程 3.多线程共享全局变量,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
多线程共享全局变量
多个线程同时操作一个资源时,会出现资源竞争问题 1.调度线程1修改数据时,可能还未完成修改,调度时间就已经结束 2.调度线程2修改数据,可能在调度时间内完成了修改操作 3.调度回到线程1后,线程1会继续之前未完成的修改操作,导致线程2的修改失效 解决方法:使用join()让某个线程优先执行,由于把多线程变成了单线程,程序性能会下降
import threading import time num = 0 # work1 def work1(): # 声明全局变量 global num for i in range(100000): num += 1 print('work1----------',num) # work2 def work2(): global num for i in range(100000): num += 1 print('work2----------',num) # 创建线程 if __name__ == '__main__': t1 = threading.Thread(target=work1) t2 = threading.Thread(target=work2) t1.start() # 设置线程t1优先执行 t1.join() t2.start() # 子线程全部结束后再继续执行 while len(threading.enumerate()) != 1 : time.sleep(1) print('main----------',num) work1---------- 100000 work2---------- 200000 main---------- 200000
这篇关于线程 3.多线程共享全局变量的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南