2019.09.18学习整理 锁,多线程vs多进程
2019.09.18学习整理 线程锁 同步锁(线程的互斥锁) 多线程修改数据会造成混乱 from threading import Thread,current_thread,Lock import time x = 0 def task(): global x for i in range(100000): # 最少10万级别才能看出来 x = x+1 # 有可能右边的x刚拿到了0, # 发生线程不安全的原因: # t1 x+1 阶段 x = 0 保存了状态 cpu被切走 t2 x+1 x = 0 保存了状态 cpu被切走 # 下次t1 继续运行代码 x = 0+1 下次t2 再运行代码的时候也是 x = 0+1 # 也就说修改了两次 x 只加了一次1 。 # time.sleep() # lock.release() if __name__ == '__main__': t_list = [] for i in range(3): t = Thread(target=task) t_list.append(t) t.start() for i in t_list: i.join() print(x) # 99 使用线程锁解决线程修改数据混乱问题 from threading import Thread,current_thread,Lock import time x = 0