线程 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-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行
- 2024-05-08阿里云域名注册流程,分享给第一次购买域名的新手站长!
- 2024-05-082024年,行业变动下的程序员应该首先学习哪种编程语言?