blackball9  

加锁虽然会降低执行效率,但是保证了数据的稳定性和安全性

由于线程中的数据共享,以及线程的并发机制,和cpu时间片轮转机制,所以导致有可能某线程未全部运行完毕,导致线程切换导致数据的混乱。

a = 0
def add_f(lock):
    global a
    for i in range(200000):
        with lock:
            a += 1

def sub_f(lock):
    global a
    for i in range(200000):
        with lock:
            a -= 1

from threading import Thread,Lock
lock = Lock()
t1 = Thread(target=add_f,args=(lock,))
t1.start()
t2 = Thread(target=sub_f,args=(lock,))
t2.start()
t1.join()#需要使用join方法阻塞下
t2.join()#需要使用join方法阻塞下
print(a)

 

posted on 2019-12-04 17:03  blackpearl9  阅读(168)  评论(0编辑  收藏  举报