线程 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.多线程共享全局变量的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程